-1
我需要一個具有鍵值訪問權限的容器(如地圖或未排序的地圖),但也可以用某種方式排序。
有人可以建議這樣的容器嗎?
例如:
我需要在其中存儲例如Employer類值作爲值和一些字符串id作爲不等於僱主名稱的關鍵字。
所以我希望容器可以按僱主名稱排序。
找到合適的容器類型
我需要一個具有鍵值訪問權限的容器(如地圖或未排序的地圖),但也可以用某種方式排序。
有人可以建議這樣的容器嗎?
例如:
我需要在其中存儲例如Employer類值作爲值和一些字符串id作爲不等於僱主名稱的關鍵字。
所以我希望容器可以按僱主名稱排序。
找到合適的容器類型
我建議使用普通的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;
}
);
不錯的主意。 thx尋求建議。 –
您的意思是它必須在*施工之後可排序* – juanchopanza
好吧,'std :: map' *是以某種方式排序的(即根據它的鍵)。如果這不是你想要的,請讓你的問題更清楚。 – syam
我已經提供了一些exmaple ... –