为什么不;名字在地图上是按顺序排列的吗
why wouldn't names come out in arranged order in maps?
我在map中遇到了一个问题,我试图定制map,但它以不同的顺序出现。是不是有办法让它按安排好的顺序出来。
#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穆斯塔法:12tftf:141
它很简单,std::map按键(在您的例子中是名称(对其项进行排序。你可能想为你的问题找到另一个解决方案,例如容器。这是前面的一个问题和一个答案,可能会给你一些见解。
std::map,如何按值排序,然后按键排序
您可以使用pair
的vector
来解决此问题
-首先,将类型person
定义为string
和int
的pair
-其次,定义一个person
s的vector
,然后根据需要添加到vector
中
然后您就可以按照插入的顺序打印了。
#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;
}
这是一个现场演示:https://coliru.stacked-crooked.com/a/7913c31d50074bdc
相关文章:
- 为什么不;名字在地图上是按顺序排列的吗
- C++按字母顺序排列的字符串数组
- 如何在 c++ 中按字母顺序排列数组中的字符串?
- 尝试在 c++ 中按字母顺序排列单词时出现分段错误
- OpenGL,尽管按逆时针顺序排列,但一些法线还是反转了
- 有没有办法在不使用任何迭代的情况下将字符的字母顺序排列
- 我可以使用普通的气泡排序来按字母顺序排列列表吗?
- C 按顺序排列一个指针阵列
- 检查用户输入是否按字母顺序排列
- 数组内存地址总是按最小到最大的顺序排列吗
- 如何在C++上按字母顺序排列列表
- STL 优先级队列按递增顺序排列
- 正十进制整数的递归函数位数,按c++的相反顺序排列
- 按字母顺序排列单词
- 如何按大小写顺序排列字符串(而不是按字典顺序排列)
- C++ 自定义映射键/值不按顺序排列
- 按特定顺序排列矢量元素
- 检查文本文件是否按字母顺序排列
- 对的优先级队列以相反的顺序排列
- 如何将按字母顺序排列的BST排序为按频率排序的树