将Boost :: Map迭代器转换为std :: iterator

时间:2016-04-22 14:10:00

标签: boost unordered-map

我正在为Boost无序地图容器编写包装器方法。在boost Unordered Map中有一个方法begin(),它返回第一个元素的迭代器。实际上在我的包装器类中,我想从Begin方法返回一个std :: Unordered_map :: iterator而不是boost :: unordered_map :: iterator 。 示例代码: 模板

boost::unordered_map<key, value> m_myMap;

boost::unordered::unordered_map::iterator MyWrapper<>::Begin()
{
    return m_myMap.begin();
}

在上面的代码中,我想返回std :: Unordered_map :: iterator 请帮忙

1 个答案:

答案 0 :(得分:2)

你不能。 C ++是一种强类型语言。

你能做的最好的事情是

  • 使用std::unordered_map
  • 使用类型删除隐藏实施(boost::any_iteratorboost::any_range

我的spidy意识告诉我你应该通过推导出的模板参数类型来获取迭代器,而不是将它们硬编码到你的算法中。

template <typename Iterator>
void foo_algo(Iterator begin, Iterator end, int some_data) {
...