C++11 如何获取映射c+中的第三个元素(从开始到结束)+;

C++11 如何获取映射c+中的第三个元素(从开始到结束)+;,c++11,stdmap,C++11,Stdmap,我希望在不迭代映射的情况下访问第三个元素(按正向和反向顺序) int main() { map<int,int>mp; vector<int>v={1,4,2,5,4,2,5,7,6,9,7,9,8}; for(int i=0;i<v.size();++i) { mp[v[i]]++; } return 0; intmain(){ mapmp; 向量V={1,4,2,5,4,2,5,7,6,9,7,9,8}; 对于(int i=0;i您可以使用该函数,但请

我希望在不迭代映射的情况下访问第三个元素(按正向和反向顺序)

int main() {
map<int,int>mp;
vector<int>v={1,4,2,5,4,2,5,7,6,9,7,9,8};
for(int i=0;i<v.size();++i)
{
    mp[v[i]]++;
}
return 0;
intmain(){
mapmp;
向量V={1,4,2,5,4,2,5,7,6,9,7,9,8};
对于(int i=0;i您可以使用该函数,但请注意,map容器不是为随机访问而设计的,因此即使您出于性能原因避免自己进行迭代,也会在引擎盖下发生,从而产生线性时间复杂度

// forward iterator
auto it_fwd = mp.begin();
std::advance(it_fwd, 2);    // go to the 3rd item from the beggining

// backward iterator
auto it_bwd = mp.rbegin();
std::advance(it_bwd, 2);    // go to the 3rd item from the end

std::cout << it_fwd->first << ':' << it_fwd->second << '\n';
std::cout << it_bwd->first << ':' << it_bwd->second << '\n';
//正向迭代器
auto it_fwd=mp.begin();
std::advance(it_fwd,2);//从菜单转到第三项
//向后迭代器
auto it_bwd=mp.rbegin();
std::advance(it_bwd,2);//转到结尾处的第三项

std::cout首先您尝试了什么?此代码仅构建您的
映射
。是否需要为此使用std::map?经过修剪的优先级队列或堆管理的数组将在不迭代的情况下给出两个答案。