C++ 为什么地图上的名字不按顺序排列?

C++ 为什么地图上的名字不按顺序排列?,c++,C++,我在地图上遇到了一个问题,我正试图画出地图,但结果是不同的。 有没有办法使它按预定的顺序出来 #include<iostream> #include<map> int main(){ std::map<std::string,int> person; person["Mostafa"]=12; person["Mickel"]=14; person["tftf"]=141; person["Daniel"]=15; std::map<std::strin

我在地图上遇到了一个问题,我正试图画出地图,但结果是不同的。 有没有办法使它按预定的顺序出来

#include<iostream>
#include<map>
int main(){
std::map<std::string,int> person;
person["Mostafa"]=12;
person["Mickel"]=14;
person["tftf"]=141;
person["Daniel"]=15;
std::map<std::string,int>::iterator it;
for(it=person.begin();it!=person.end();it++){
    std::pair<std::string,int> memo=*it;
    std::cout<<memo.first<<": "<<memo.second<<std::endl;
}
std::cin.get();
return 0;
}
结果是: 丹尼尔:15 米克尔:14 莫斯塔法:12
tftf:141

这很简单,std::map按大小写中的名称键对项目进行排序。您可能需要为您的问题找到另一个解决方案,例如容器。这里是前面的一个问题和一个答案,可能会给你一些启示

您可以使用成对向量来解决此问题。 -首先,将类型person定义为一对string和int。 -其次,定义人员向量,然后根据需要添加到向量中。 然后,您将能够以插入的相同顺序打印

#include<iostream>
#include<map>
#include<vector>

int main(){
    typedef std::pair<std::string,int> person;

    std::vector<person> vMap;
    vMap.emplace_back("Mostafa", 12);
    vMap.emplace_back("Mickel", 14);
    vMap.emplace_back("tftf", 141);
    vMap.emplace_back("Daniel", 15);

    for(const auto& a: vMap)
     std::cout<<a.first<< " " << a.second<<std::endl;

    return 0;
}
这是一个现场演示: