假设我有范围(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
可以是copyable
,assignable
,opertor<
但没有equality operator
和arithmetic operators
的任何类型。
答案 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循环
然后按预期使用所有运算符