【问题标题】:Convert Boost::Map iterator to std::iterator将 Boost::Map 迭代器转换为 std::iterator
【发布时间】:2016-08-16 05:14:12
【问题描述】:

我正在为 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 请帮忙

【问题讨论】:

    标签: boost unordered-map


    【解决方案1】:

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

    你能做的最好的就是

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      • 2015-09-03
      • 2012-03-04
      相关资源
      最近更新 更多