首页 > 解决方案 > 从地图中获取前两个元素

问题描述

我只需要读取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未在范围内声明

我在这里错过了什么,如果有更好的方法吗?

标签: c++iteratorstdmap

解决方案


要使用std::next,您至少需要具有符合 C++11 的编译器。

std::next返回一个新的递增迭代器。因此,您需要使用它的返回值来获取递增的迭代器,即:

itr = next( itr );

现在,itr正指向同一个元素,因为没有使用返回值。

如果您打算在itr没有新迭代器的情况下增加,那么std::advance是一个更好的候选者,即:

std::advance( itr, 1 );

如果您使用的是 C++11 之前的编译器,那么您可以像这样使用增量运算符:

itr++;

或者,

++itr;

这是一个现场演示。


此外,地图未初始化/为空,您尝试访问其不存在的元素,这将导致Undefined Behavior

相关阅读:


推荐阅读