为什么在地图中打印第二个元素
Why is the second element being printed in map?
在下面的代码中,为什么在使用begin((时返回元素2而不是元素1?有人可以解释一下吗?
int main()
{
map <string, int> name;
// Adding the contents into map
name["David"] = 1;
name["Charlie"] = 2;
name["Robert"] = 3;
map<string, int>::iterator i1 =name.begin();
cout << "The first element is : " << (*i1).first << "The second
element is "<<(*i1).second<<endl;
}
在我得到的输出中
第一个元素是:查理第二个元素是2
当您将项目添加到map
时,它们会自动按键排序。这意味着地图将按键的字母顺序存储您的项目。在这种情况下,Charlie
获得第一名,然后David
,最后Robert
。
如果您更改John
的Charlie
,则David
将首先存储。我不完全确定你打算用这个做什么,但似乎你的号码应该是你的钥匙
std::map
是一个排序容器。排序的值的类型为 std::pair< std::string, int >
。所以第一项是{"Charlie", 2}
对。碰巧pair
的成员被命名为 first
和 second
.
所以std::pair< std::string, int >{"Charlie", 2}.first
是"Charlie"
,并且
std::pair< std::string, int >{"Charlie", 2}.second
2
.
first
和second
不是指map
的排序序列。
相关文章:
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 打印无序映射的第二个元素,即集合
- c++:交换向量中所有元组的第一个和第二个元素
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 为什么我在对向量的第二个元素"push_back"中有C3867错误
- 如何打印第一个和最后一个元素的和,然后打印第二个和倒数第二个元素的总和,依此类推
- 如何获得相同数量的第一个和第二个元素以及它们在c++中各自的位置
- 使用索引与迭代器将向量迭代到倒数第二个元素
- C++ 比较容器中所有对的第一个和第二个元素
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 如何仅根据第二个元素对map<int,pair<int,int> >进行排序?
- 如何通过STL设置迭代直到第二个元素
- 如何获取列表中的倒数第二个元素
- 如何在C 对向量的第二个元素上执行较低的操作
- 如何迭代双重链接列表的每个第二个元素(戒指)
- C++迭代到倒数第二个元素
- 迭代对向量并访问第一个和第二个元素
- 为什么在地图中打印第二个元素