簡體   English   中英

如何在C ++中根據另一個地圖對地圖排序?

[英]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所說,您可以從地圖的beginend迭代器簡單地構造一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM