[英]Fetch first two elements from map
我只需要读取std::map
中的前两个元素。
这是我的代码:
#include<iostream>
#include<map>
#include<iterator>
using namespace std;
int main() {
map<int,int> a;
map<int,int>:: iterator itr;
itr = a.begin();
cout<<itr->first<<" "<<itr->second<<endl;
next(itr);
cout<<itr->first<<" "<<itr->second<<endl;
return 0;
}
我收到此错误:
next
没有在 scope 中声明
我在这里错过了什么,如果有更好的方法吗?
要使用std::next ,您至少需要具有 C++11 兼容的编译器。
std::next
返回一个新的递增迭代器。 因此,您需要使用它的返回值来获取递增的迭代器,即:
itr = next( itr );
现在, itr
指向同一个元素,因为没有使用返回值。
如果您打算在没有新迭代器的情况下增加itr
,那么std::advance是一个更好的候选者,即:
std::advance( itr, 1 );
如果您使用的是 C++11 之前的编译器,那么您可以像这样使用增量运算符:
itr++;
或者,
++itr;
这是一个现场演示。
此外, map 未初始化/为空,您正在尝试访问其不存在的元素,这将导致Undefined Behavior 。
相关阅读:
您应该使用itr++
将 itr 向前移动以指向下一组对。 您可以通过map->first;
和map->second;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.