C++ 寻找合适的容器类型

C++ 寻找合适的容器类型,c++,qt,stl,C++,Qt,Stl,我需要一个容器,它有键值访问,比如map或unsortedmap,但也可以通过某种方式进行排序。 有人能推荐这样的容器吗? 例子: 我需要存储在它例如雇主类值作为值和一些字符串id作为键,这是不等于雇主的名字。 所以我希望容器可以按雇主名称排序。我建议使用普通的std::map,例如 你的意思是它在构建之后必须是可排序的吗?嗯,std::map是以某种方式排序的,即根据它的键进行排序的。如果这不是你想要的,请让你的问题更清楚。我提供了一些exmaple…@syam我知道地图是按键排序的,但这种排

我需要一个容器,它有键值访问,比如map或unsortedmap,但也可以通过某种方式进行排序。 有人能推荐这样的容器吗? 例子: 我需要存储在它例如雇主类值作为值和一些字符串id作为键,这是不等于雇主的名字。 所以我希望容器可以按雇主名称排序。

我建议使用普通的std::map,例如


你的意思是它在构建之后必须是可排序的吗?嗯,std::map是以某种方式排序的,即根据它的键进行排序的。如果这不是你想要的,请让你的问题更清楚。我提供了一些exmaple…@syam我知道地图是按键排序的,但这种排序不适合我。你看过boost多索引容器吗。可能就是你要找的。好主意。谢谢你的建议。
typedef std::map<std::string, Employer> EmployerMap;
EmployerMap employers;
// Build vector of iterators into map
std::vector<EmployerMap::iterator> v;
v.reserve( employers.size() );
for ( EmployerMap::iterator it, it != employers.end(); ++it ) {
  v.push_back( it );
}

// Sort vector by names of employers.
std::sort( v.begin(), v.end(),
           [](const EmployerMap::iterator &a, const EmployerMap::iterator &b) -> bool {
               return a->name < b->name;
           }
         );