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)
{
}