相关疑难解决方法(0)

我可以阻止std :: sort复制传递的比较对象

我们使用比较器对象来对矢量进行排序:

std::vector<Data> v = ....
Comparator c = ....
std::sort(v.begin(), v,end(), c);
Run Code Online (Sandbox Code Playgroud)

但是,这会在排序过程中生成c的副本,并导致性能问题,因为Comparator对象存储一个大的映射(在调用比较函数时会进行查找).我以为我可以强制使用引用:

const Comparator &ref = c;
std::sort(v.begin(), v.end(), ref);
Run Code Online (Sandbox Code Playgroud)

但副本仍然会发生.有没有办法防止复制,或者我是否必须使Comparator只存储指向重数据的指针?(我认为我们的编译器版本不能使用lambda/closures).

c++ stl

8
推荐指数
1
解决办法
623
查看次数

标签 统计

c++ ×1

stl ×1