c++ - 从地图中获取前两个元素
问题描述
我只需要读取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
未在范围内声明
我在这里错过了什么,如果有更好的方法吗?
解决方案
要使用std::next,您至少需要具有符合 C++11 的编译器。
std::next
返回一个新的递增迭代器。因此,您需要使用它的返回值来获取递增的迭代器,即:
itr = next( itr );
现在,itr
正指向同一个元素,因为没有使用返回值。
如果您打算在itr
没有新迭代器的情况下增加,那么std::advance是一个更好的候选者,即:
std::advance( itr, 1 );
如果您使用的是 C++11 之前的编译器,那么您可以像这样使用增量运算符:
itr++;
或者,
++itr;
这是一个现场演示。
此外,地图未初始化/为空,您尝试访问其不存在的元素,这将导致Undefined Behavior。
相关阅读:
推荐阅读
- mongodb - mongodb:如何获取按子数组字段排序的限制文档数?
- angular - 如何存储显示的值 mat-select
- google-apps-script - TRUE 一个复选框,并启动一个后台计时器,然后自动将 TRUE 设置为复选框的下两列
- jquery - jquery函数不适用于触发位置:粘性
- google-chrome - 浏览器证书验证
- python - Django AttributeError:模块'cal.views'没有属性'index'
- amazon-web-services - AWS 负载均衡器出口规则混乱
- python - 在 Python 中丢失 Group By 列
- javascript - 如何在不使用输入到 Papa 解析函数的情况下在本地传递文件
- c++ - 如何在没有 Cygwin 或 Visual Studio 的情况下编译 Magick++?