Hãy nói rằng chúng tôi có std::set<int>
và chúng tôi muốn tạo ra một std::vector<int>
với tất cả các giá trị từ bộ rằng:Khởi tạo một container với phạm vi iterator của container với loại khác nhau
std::set<int> set;
std::vector<int> vec(set.begin(), set.end());
Đây là đơn giản và thanh lịch. Nhưng giả sử tôi có số std::map<std::string,int>
và tôi muốn sao chép tất cả các giá trị sang std::vector<int>
. Thật không may là không có hàm tạo nào, chấp nhận phạm vi của các trình vòng lặp và hàm chuyển đổi. Tại sao không có nhà xây dựng như vậy được cung cấp? Có một cách đơn giản và thanh lịch để khởi tạo một container với các giá trị kiểu khác nhau?
Cá nhân, tôi thích toán tử "đường ống" hơn khi sử dụng bộ điều hợp tăng cường 'phạm vi tự động = m | boost :: adapters :: values; ' – Alan
@Alan Tôi thích toán tử gọi hàm cho các cuộc gọi hàm, và nó ngắn hơn để gõ (' | 'vs'() '). –