Mam std::multimap
i chcę utworzyć boost::iterator_range
z equal_range
. Nie znalazłem prosty sposób robi to w dokumentacji, więc próbowałem następujące:Konwersja std :: para iteratorów na boost :: iterator_range
typedef std::multimap<int, std::string> Map;
Map map;
...
boost::iterator_range<Map::iterator> r(map.equal_range(2));
Zaskakująco, to działa (za pomocą GCC 4.1.2). Ciekawi mnie, jak to działa. Nie znalazłem przeciążenia dla konstruktora iterator_range
, który by to zrobił, i multimap::iterator_range
oczywiście nie ma przeciążenia, które zwróci zakresy wzmocnienia.
Zauważ, że istnieje również 'boost :: make_iterator_range', które dedukuje podstawowy typ iteratora z pary. – alfC