繁体   English   中英

从 map 获取前两个元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM