<分区>
std::map<char*, int> mymap;
mymap['a'] = 1;
mymap['b'] = 2;
mymap['c'] = 3;
如果插入顺序发生变化,如何按特定顺序打印 1、2、3? 我不知道插入顺序。但是每次输出的顺序应该是一样的。
<分区>
std::map<char*, int> mymap;
mymap['a'] = 1;
mymap['b'] = 2;
mymap['c'] = 3;
如果插入顺序发生变化,如何按特定顺序打印 1、2、3? 我不知道插入顺序。但是每次输出的顺序应该是一样的。
最佳答案
I don't know the insertion order . But the order of output should be same everytime.
这正是 std::map
的方式作品。迭代器按照由映射比较器引起的严格弱排序遍历元素。插入顺序不影响迭代顺序。
std::map<char*, int>
How to print 1, 2, 3 in that particular order.
这里的问题是映射是按键而不是按值排序的。
如果您需要按值顺序迭代 map 的元素,那么您似乎需要一个多索引容器。这样的容器可以通过一个索引查找,并使用另一个索引进行迭代。然而,C++ 标准库不提供此类多索引容器。
多索引容器的思想很简单。它由节点组成,就像列表或树一样,但每个节点包含多组链接 - 每个索引一个。这种容器的通用实现并不像想法那么简单。
mymap['a'] = 1;
您不能使用 char
作为键类型为 char*
的映射的查找参数.
关于c++ - 以 std::map<char*, int> mymap 的顺序在 map 中存储字符指针。将其存储为字符或字符串不是一种选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612281/