根据插入序列对地图键进行排序

Che*_*eng 3 c++ stl

没有其他容器(如矢量)的帮助,我是否可以使地图的键与插入序列的顺序相同?

#include <map>
#include <iostream>

using namespace std;

int main()
{
  map<const char*, int> m;
  m["c"] = 2;
  m["b"] = 2;
  m["a"] = 2;
  m["d"] = 2;


  for (map<const char*, int>::iterator begin = m.begin(); begin != m.end(); begin++) {
      // How can I get the loop sequence same as my insert sequence.
      // c, b, a, d
      std::cout << begin->first << std::endl;
  }

  getchar();
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 6

A号std::map是一个分类的容器; 不维护插入顺序.有许多解决方案使用第二个容器来维护插入顺序以响应另一个相关问题.

也就是说,你应该std::string用作你的钥匙.使用a const char*作为映射键是一个错误的想法:它几乎不可能通过其键访问或搜索元素,因为只会比较指针,而不是字符串本身.