我有一个std::multimap
,我想创建一个boost::iterator_range
from equal_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 范围。