Tôi có một std::multimap
và tôi muốn tạo một boost::iterator_range
từ equal_range
. Tôi không tìm thấy cách đơn giản để thực hiện nó trong tài liệu, vì vậy tôi đã thử các cách sau:Chuyển đổi std :: cặp vòng lặp để tăng :: iterator_range
typedef std::multimap<int, std::string> Map;
Map map;
...
boost::iterator_range<Map::iterator> r(map.equal_range(2));
Đáng ngạc nhiên, nó hoạt động (sử dụng GCC 4.1.2). Tôi tò mò làm thế nào nó hoạt động. Tôi thấy không có tình trạng quá tải cho các nhà xây dựng iterator_range
mà sẽ làm điều đó, và multimap::iterator_range
rõ ràng là không có tình trạng quá tải sẽ trả về phạm vi Boost.
Lưu ý rằng cũng có 'boost :: make_iterator_range' để loại trừ loại trình lặp cơ bản từ cặp. – alfC