带有捕获的比较器
comparator with capture
本文关键字:比较器 更新时间:2023-10-16
我想创建一个带有比较器的boost::binomial_heap
,该比较器使用外部数据,类似
bool compare(int a1, int a2)
{
return price[a1] < price[a2];
}
(例如,这里的price
是二重的vector
。)
如何声明捕获price
的比较函数?
下面的C++11代码展示了如何做到这一点:
#include <vector>
#include <map>
int main()
{
std::vector<double> price{0.3, 0.2, 0.1};
auto cmp = [&price](int i, int j){return price[i] < price[j];};
std::map<int, float, decltype(cmp)> m(cmp);
m[2] = 'b';
m[1] = 'c';
}
线路
std::vector<double> price{0.3, 0.2, 0.1};
定义向量CCD_ 5。
线路
auto cmp = [&price](int i, int j){return price[i] < price[j];};
创建一个lambda函数,该函数通过引用捕获price
。
线路
std::map<int, float, decltype(cmp)> m(cmp);
创建一个由该类型参数化的容器(在本例中为std::map
),并将一个对象作为比较器。将其用于不同的容器将是类似的。
相关文章:
- std::设置自定义比较器
- C++中"std::sort"比较器的不同类型
- 将 std::set 与基于键的比较器一起使用
- 带自定义比较器的最小优先级队列
- 函数类作为比较器
- 优先级队列自定义比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- set_intersection使用自定义设置比较器
- 如何为集合 c++ 建立比较器
- C++复杂情况的比较器通过参数问题
- 对于BTreeMap和其他依赖于Ord的东西,是否有等效于C++比较器对象?
- 对没有比较器或λ函数的向量进行排序?
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 用户定义的结构是否有默认C++比较器?
- C++设置了一个用于排序的比较器和另一个用于唯一性的比较器
- 使用迭代器的自定义比较器函数
- C++对λ比较器EXC_BAD_ACCESS进行排序
- 如果要求比较器是严格的总排序,而不仅仅是严格的弱排序,C++标准算法会更快吗?
- Cython中带有自定义比较器的优先级队列