我想访问map
中c++
的任何成员。
就像我有一个map = {(4,3), (5,6), (9,8)}
并说我想获得这张地图的第二个成员。我试过了
map<int, int>::iterator it = mpp.begin();
cout << (it+1)->first << " " << (it+1)->second << endl;
我没有取得任何成功。请帮帮我。
答案 0 :(得分:0)
我宁愿应用一个简单的方法。
假设我必须从乞讨中获取jth
元素。
map<int, int>::iterator it = mpp.begin();
while(j--)
it++;
cout << it->first << " " << it -> second << endl;
答案 1 :(得分:0)
只有随机访问迭代器才有operator+
和operator-
的重载。双向迭代器(例如std::map::iterator
)不会。然而,可以使用std::next
(因为C ++ 11)线性地推进
返回迭代器的第n个后继者。
或std::advance
给定n个元素迭代的增量。
PS。注意,找到std::map
的第n个元素的复杂性具有线性复杂性。还有其他类似的数据结构提供std::map
具有的功能,但也允许更快的第n个成员查找。因此,替代数据结构可能更适合您的用例。
例如,可以使用每个子树的大小来扩充二叉搜索树。这种结构称为顺序统计树。对于内存开销的小线性增加,它为查找第n个元素提供了O(log n)复杂度。