找到合适的容器类型

时间:2013-08-21 11:50:39

标签: c++ qt stl

我需要一个具有键值访问权限的容器(如地图或未排序的地图),但也可以通过某种方式进行排序。
有人可以提出这样的容器吗? 例如:
我需要存储它,例如Employer类值作为值,一些字符串id作为键,不等于雇主的名字。
所以我希望容器可以按雇主名称排序。

1 个答案:

答案 0 :(得分:2)

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

typedef std::map<std::string, Employer> EmployerMap;
EmployerMap employers;

...然后使用一些序列容器(例如std::vector),迭代器指向地图。然后根据需要对序列容器进行排序:

// 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;
           }
         );