我需要一个具有键值访问权限的容器(如地图或未排序的地图),但也可以通过某种方式进行排序。
有人可以推荐这样的容器吗?
示例:
我需要在其中存储例如 Employer 类值作为值和一些字符串 id 作为键,这不等于雇主的名字。
所以我希望容器可以按雇主名称排序。
问问题
110 次
1 回答
2
我建议使用普通的std::map
,例如
typedef std::map<std::string, Employer> EmployerMap;
EmployerMap employers;
...然后使用一些std::vector
带有指向地图的迭代器的序列容器(例如 a )。然后根据需要对序列容器进行排序:
// 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;
}
);
于 2013-08-21T11:58:29.120 回答