У меня есть std::multimap
, и я хочу создать boost::iterator_range
от equal_range
. Я не нашел простой способ сделать это в документации, поэтому я попытался следующее:Преобразование std :: пара итераторов для boost :: iterator_range
typedef std::multimap<int, std::string> Map;
Map map;
...
boost::iterator_range<Map::iterator> r(map.equal_range(2));
Удивительно, но это работает (с помощью GCC 4.1.2). Мне любопытно, как это работает. Я не нашел перегрузки для конструктора iterator_range
, который сделал бы это, и multimap::iterator_range
явно не имеет перегрузки, которая возвращала диапазоны Boost.
Обратите внимание, что существует также 'boost :: make_iterator_range', который выводит из этой пары тип итератора. – alfC