[英]How do I sort a map according to another map in c++?
我有兩張地圖:
map< T t, int v> map1;
map< T t, int v> map2;
如何根據map1的值對map2進行排序? (或將結果保存到向量?)有沒有簡單的方法可以達到此目的?
您不能對std::map
排序。 映射始終按鍵的排序順序保存。 這是數據結構的基本不變式,您無能為力。 最好的辦法是將地圖復制到另一個容器中,然后重新排列該容器,例如:
std::vector<std::pair<T, int>> v(map1.begin(), map1.end());
正如Kerrek所說,您可以從地圖的begin
和end
迭代器簡單地構造一個std::vector< std::pair< T, int> >
,但這也將為您提供鍵和值。 您可以使用std::transform
僅獲取值:
std::map<int, int> m = { {1,-1}, {2,-2} };
std::vector<int> v; v.reserve(m.size());
std::transform(m.begin(), m.end(), std::back_inserter(v),
[](const std::pair<const int, int>& p)
{ return p.second; });
// or
std::transform(m.begin(), m.end(), std::back_inserter(v),
std::bind(&std::pair<const int, int>::second, std::placeholders::_1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.