admin管理员组文章数量:1624338
目录
- 一、Lambda 函数与表达式
- 二、priority_queue 定义 及其使用
- 三、sort定义 及其使用
- 参考
一、Lambda 函数与表达式
-
C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。
-
Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。
-
Lambda 表达式本质上与函数声明非常类似。Lambda 表达式具体形式如下:
-
[capture](parameters)->return-type{body}
-
例如:
-
[](int x, int y){ return x < y ; }
-
capture 定义如下:
[] // 沒有定义任何变量。使用未定义变量会引发错误。
[x, &y] // x以传值方式传入(默认),y以引用方式传入。
[&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。
[=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。
[&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。
二、priority_queue 定义 及其使用
template <class T, class Container = vector<T>,class Compare = less<typename Container::value_type> >
class priority_queue;
- 其中第三个参数默认为less (从大到小排) ;less 和 greater 是stl提供的比较函数;
- 下面显式声明为greater;
std::priority_queue<int, std::vector<int>, std::greater<int> >
third ;
- 利用lambda实现 如下:
- 例子:
- 这几种方法都可,其中auto帮我们推导了类型,decltype帮我们解析了类型
function<bool(const int&a, const int&b)> mycomp2 = [&](const int &a, const int &b) { return a < b; };
auto mycomp = [&](const int &a, const int &b) { return a < b; };
priority_queue<int, vector<int>, function<bool(const int&, const int&)>> que5(mycomp);
priority_queue<int, vector<int>, decltype(mycomp2) > que3(mycomp2);
三、sort定义 及其使用
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
sort(wordList.begin(), wordList.end(), greater<string>());
sort(wordList.begin(), wordList.end(), [](const string &a, const string &b) { return a < b; }) ;
参考
cplusplus
C++ 函数
本文标签: 多种声明priorityqueueLambdasort
版权声明:本文标题:【C++】【 lambda使用】priority_queue 与 sort 对 lambda的使用; lambda的多种使用和声明;decltypeauto推导; 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728897431a1178591.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论