在没有next()定义

时间:2016-11-29 16:06:28

标签: c++ stdmap

假设我有范围(r1,r2]中的对象我想作为键插入到地图中。它们没有迭代器/下一个定义,但是有一个小于运算符。我该怎么做:

   template< class K, class V>
   void foo( K r1, K r2, V val ) {
        for(K key = r1; key < r2; ++key ) 
        { 
             mMap.insert(make_pair(key,val)); 
        }
   }

我无法使用++key

K可以是copyableassignableopertor<但没有equality operatorarithmetic operators的任何类型。

2 个答案:

答案 0 :(得分:1)

密钥的可迭代性无关紧要,映射实现了对密钥集的迭代。请参阅Iterate through a HashMap中的内容:

Map<String, Object> map = ...;

for (String key : map.keySet()) {
    // ...
}

或更接近Iterate keys in a C++ map

for(std::map<Key,Val>::iterator iter = myMap.begin(); iter != myMap.end(); ++iter)
{

}

答案 1 :(得分:0)

您可以使用std :: map class

中的迭代器

你可以通过Begin

获得它

你可以用std::map<type,type>::iterator类型的迭代器编写一个for循环  然后按预期使用所有运算符