cuốn sách gpt4 ai đã làm

c++ - Tại sao std::map không có tình trạng quá tải find/low_bound và std::list không có tình trạng quá tải sắp xếp?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:04:36 32 4
mua khóa gpt4 Nike

Tôi biết bạn không nên sử dụng std::find(some_map.begin(), some_map.end()) hoặc std::low_bound, vì sẽ mất thời gian tuyến tính thay vì some_map.low_bound Thời gian logarit được cung cấp. std::danh sách Điều gì đó tương tự cũng xảy ra: có để sắp xếp std::list::sort hoạt động, nhưng bạn không thể gọi std::sort (some_list.begin(), some_list.end()), bởi vì các trình vòng lặp không thể truy cập ngẫu nhiên được.

Nhưng, ví dụ,std::hoán đổi có sự quá tải của container tiêu chuẩn, vì vậy trao đổi (some_map, other_map) Cuộc gọi thực hiện O(1), không phải trong ). Tại sao tiêu chuẩn C++ không cung cấp bản đồ và bộ sưu tập? giới hạn dướifind phiên bản chuyên dụng? Có lý do cơ bản nào không?

câu trả lời hay nhất

Tôi không nghĩ có bất kỳlý do cơ bản, nhưng nó mang tính triết học hơn bất cứ điều gì. Các dạng hàm miễn phí của thuật toán tiêu chuẩn, bao gồm cả các thuật toán bạn đề cập, lấy các cặp vòng lặp để chỉ ra phạm vi mà chúng sẽ đi qua. Thuật toán không thể xác định loại vùng chứa cơ bản từ các trình vòng lặp này.

Việc cung cấp các chuyên môn hóa hoặc quá tải sẽ không phù hợp với mô hình này vì bạn sẽ phải chuyển chính vùng chứa đó vào thuật toán.

tráo đổi Khác nhau vì nó chấp nhận các thể hiện của các loại liên quan làm đối số, không chỉ các trình vòng lặp.

Giới thiệu về c++ - Tại sao std::map không có tình trạng quá tải find/low_bound và std::list không có tình trạng quá tải sắp xếp? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/22259631/

32 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress