【发布时间】:2012-04-27 15:30:24
【问题描述】:
我有一个std::multimap,我想从equal_range 创建一个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从该对中推断出底层迭代器类型。
标签: c++ boost iterator boost-range