C++ 在未定义next()的情况下遍历对象

C++ 在未定义next()的情况下遍历对象,c++,stdmap,C++,Stdmap,假设我有范围(r1,r2]中的对象,我想将它们作为映射的键插入。它们没有定义迭代器/next,但有一个小于运算符。我将如何执行此操作: 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));

假设我有范围
(r1,r2]
中的对象,我想将它们作为映射的键插入。它们没有定义迭代器/next,但有一个小于运算符。我将如何执行此操作:

   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)); 
        }
   }
模板
无效foo(K r1、K r2、V val){
用于(K键=r1;键
我不能使用
++键


K
可以是任何类型的
可复制的
可分配的
,具有
操作器键的可编辑性是不相关的,映射在键集上实现迭代。请参阅下面的内容:

Map=。。。;
for(字符串键:map.keySet()){
// ...
}
或更接近:

for(std::map::iterator iter=myMap.begin();iter!=myMap.end();++iter)
{
}

您可以使用std::map类中的迭代器

你明白了吗

您可以从类型
std::map::iterator

然后按预期使用所有运算符

那么
std::next
呢?为此,我需要键
K的迭代器
std::map
总是有迭代器。我不确定你在问什么。没有足够的信息-你确切地知道所有键r1-r2是什么,并且你在列表中有它们吗?否则你怎么知道嘿,看起来怎么样?我已经用示例更新了这个问题…或者只是
for(const auto&keyvalue:myMap){…keyvalue.first…keyvalue.second…}
实际上我想插入范围
(r1,r2]
。for(K key=r1;key++key
。谢谢,我有点生疏了,而且没有完全理解新语法。@has,你的问题很不清楚。请删除问题中对映射的任何引用,只问如何在没有定义迭代的情况下迭代一系列对象。@has如果
K
不可迭代,那么说话就没有意义了关于
K
的范围。您必须告诉我们有关您的
K
类型的更多信息。
Map<String, Object> map = ...;

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

}