我们正在使用一个比较器对象来对向量进行排序:
std::vector<Data> v = ....
Comparator c = ....
std::sort(v.begin(), v,end(), c);
然而,这会在排序期间复制c的副本,并且由于Comparator对象存储了一个大型映射表(在调用比较函数时进行查找),因此会导致性能问题。我认为我可以通过以下方式强制使用引用:
const Comparator &ref = c;
std::sort(v.begin(), v.end(), ref);
但是即使使用这种方式,复制仍然会发生。 有没有一种方法可以防止复制,还是说我必须让比较器只储存指向重要数据的指针?(我认为我们不能在我们的编译器版本中使用lambda/闭包)。
std::ref
吗? - Mat