Ho uno std::multimap
e voglio creare uno boost::iterator_range
da equal_range
. Ho trovato un modo semplice di farlo nella documentazione, così ho provato la seguente:Conversione di std :: coppia di iteratori per aumentare :: iterator_range
typedef std::multimap<int, std::string> Map;
Map map;
...
boost::iterator_range<Map::iterator> r(map.equal_range(2));
Sorprendentemente, funziona (usando GCC 4.1.2). Sono curioso di sapere come funziona. Non ho trovato alcun sovraccarico per il costruttore iterator_range
che lo farebbe, e multimap::iterator_range
ovviamente non ha sovraccarico che restituirebbe intervalli di incremento.
Nota che esiste anche "boost :: make_iterator_range' che deduce il tipo di iteratore sottostante dalla coppia. – alfC