STL映射输出迭代器查找值

时间:2013-02-28 21:26:06

标签: c++ templates stl iterator output

我正在尝试创建一个通用的函数,并将输出迭代器作为任何容器类型(即,不管分配器如何,都是一种特定的映射)。

但是,我想知道itOut引用的地图是否已经包含一个元素,如果是,则更新它

template<typename OutputIterator>
static void foo(const std::wstring& rstr, OutputIterator itOut)
{
    // Insert two items into the map that itOut references
    itOut++ = TokenPair(t, 1);
    itOut++ = TokenPair(t, 2);

    // This here I don't know how to do
    if(somehow check the map already contains t)
    {
        map[t] = 5;
    }
}

肯定有办法吗?

这似乎是最好的方法,因为该程序的其他部分正在尝试传递具有相同对但不同分配器的地图。

1 个答案:

答案 0 :(得分:1)

我选择了Andy Prowl建议的解决方案,该方法模板化采用适当的地图类型。这样分配器变得无关紧要。