设置std :: map中的所有值

Wil*_*ill 6 c++ stl

如何将a std::map中的所有值设置为相同的值,而不使用循环迭代每个值?

Kon*_*lph 13

C++有这个fill方法,<algorithm>但这对地图不起作用.实际上,对关联容器的算法支持通常不好.

因此,您将不得不使用交互或编写适当的函子来使用for_each(但我认为这是不必要的开销):

template <typename TKey, typename TValue>
struct resetter : public std::unary_function<std::pair<TKey, TValue> > {
    TValue const value;

    public resetter(value const& v) : value(v) { }

    public void operator ()(std::pair<TKey, TValue>& v) {
        v.second = value;
    }
};

for_each(map.begin(), map.end(), resetter<Key, Value>(value));
Run Code Online (Sandbox Code Playgroud)