通过对象进行迭代,而没有定义下一个()



假设我在范围内有 (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可以是任何类型的copyableassignable,具有opertor<,但没有equality operatorarithmetic operators

键的迭代性是无关紧要的,地图在键集上实现了迭代。通过hashmap在迭代中看到一些东西:

Map<String, Object> map = ...;
for (String key : map.keySet()) {
    // ...
}

或在C 地图中的迭代键中更近的键:

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

您可以使用std :: map class

的迭代器

您可以开始使用

您可以使用类型std::map<type,type>::iterator的迭代器编写for循环 然后按预期使用所有操作员

最新更新