相关疑难解决方法(0)

如何按值对STL地图进行排序?

如何按值实现STL地图排序?

例如,我有一张地图m:

map<int, int> m;
m[1] = 10;
m[2] = 5;
m[4] = 6;
m[6] = 1;
Run Code Online (Sandbox Code Playgroud)

我想按照m价值对地图进行排序.所以,如果我打印地图,我想得到如下结果:

m[6] = 1
m[2] = 5
m[4] = 6
m[1] = 10
Run Code Online (Sandbox Code Playgroud)

我怎样才能以这种方式对地图进行排序?有什么方法可以用排序值处理键和值吗?

c++ sorting algorithm dictionary stl

49
推荐指数
4
解决办法
6万
查看次数

std :: pair <int,std :: string>是否定义良好?

似乎我可以对a进行排序std::vector<std::pair<int, std::string>>,std::pair它将根据int值进行排序.这是一个定义明确的事情吗?

是否std::vector<std::pair<int, std::string>>有基于它的元素的默认排序?

c++ sorting stl

35
推荐指数
2
解决办法
1万
查看次数

相当于Python的列表排序与键/ Schwartzian变换

在Python中,给定一个列表,我可以通过一个关键函数对它进行排序,例如:

>>> def get_value(k):
...     print "heavy computation for", k
...     return {"a": 100, "b": 30, "c": 50, "d": 0}[k]
...
>>> items = ['a', 'b', 'c', 'd']
>>> items.sort(key=get_value)
heavy computation for a
heavy computation for b
heavy computation for c
heavy computation for d
>>> items
['d', 'b', 'c', 'a']
Run Code Online (Sandbox Code Playgroud)

如您所见,列表不是按字母顺序排序,而是按返回值排序get_value().

C++中有等价的吗?std::sort()只允许我提供自定义比较器(相当于Python items.sort(cmp=...)),而不是关键功能.如果没有,是否有任何经过充分测试,高效,公开可用的等效实现,我可以放入我的代码?

请注意,Python版本仅为key每个元素调用一次函数,而不是每次比较调用两次.

c++ python sorting equivalent

7
推荐指数
1
解决办法
897
查看次数

标签 统计

c++ ×3

sorting ×3

stl ×2

algorithm ×1

dictionary ×1

equivalent ×1

python ×1