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

Convert Boost::Map iterator to std::iterator

我正在为 Boost 无序映射容器编写包装器方法。在 boost Unordered Map 中有一个方法 begin() ,它 return 是我包装器中第一个 element.Actually 的迭代器 class 我想 return a std::Unordered_map::iterator而不是我的 Begin 方法中的 boost::unordered_map::iterator。 示例代码: 模板

boost::unordered_map<key, value> m_myMap;

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

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

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

你能做的最好的是

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

我的敏锐感觉告诉我,您应该通过推导的模板参数类型获取迭代器,而不是将它们硬编码到您的算法中。

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