有没有人知道有没有办法可以将地图顺序从较少更改为“更多”?
例如:
有map<string, int>
名为test
。我插入了一些条目:
test["b"] = 1;
test["a"] = 3;
test["c"] = 2;
在地图内,订单将为(a, 3)(b, 1)(c, 2)
。
我希望它是(c, 2)(b, 1)(a, 3)
。
我怎样才能轻松完成?
答案 0 :(得分:9)
使用std::greater
作为密钥,而不是std::less
。
e.g。
std::map< std::string, int, std::greater<std::string> > my_map;
答案 1 :(得分:2)
如果你有一个现有的地图,而你只想反过来循环地图的元素,请使用反向迭代器:
// This loop will print (c, 2)(b, 1)(a, 3)
for(map< string, int >::reverse_iterator i = test.rbegin(); i != test.rend(); ++i)
{
cout << '(' << i->first << ',' << i->second << ')';
}