为什么在地图中打印第二个元素

Why is the second element being printed in map?

本文关键字:第二个 元素 打印 地图 为什么      更新时间:2023-10-16

在下面的代码中,为什么在使用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

如果您更改JohnCharlie,则David将首先存储。我不完全确定你打算用这个做什么,但似乎你的号码应该是你的钥匙

std::map是一个

排序容器。排序的值的类型为 std::pair< std::string, int > 。所以第一项是{"Charlie", 2}对。碰巧pair的成员被命名为 firstsecond .

所以std::pair< std::string, int >{"Charlie", 2}.first"Charlie",并且
std::pair< std::string, int >{"Charlie", 2}.second 2.

firstsecond不是指map的排序序列。