C++: lamda, CompareType,value_type

一、lamda表达式

lamda表达式表述
表达式类型

  • [capture list] (params list) -> return type {function body}
  • [capture list] (params list) {function body}
  • [capture list] {function body}
bool cmp(int a, int b)
{
    return  a < b;
}
sort(myvec.begin(), myvec.end(), cmp); // 旧式做法

sort(lbvec.begin(), lbvec.end(), [](int a, int b) -> bool { return a < b; });   // Lambda表达式

/*
注:sort中的function返回一个bool值,这个bool值指示是否应该将传递进的第一个参数放到第二个参数前面
sort默认使用less<int>(),即升序
*/

二、Compare Type

build custom comparator
compare Type使用场景常见于要构造STL中的有序对象时,如priority_queue,但是其中存储的元素为用户自定义类型,因此无法使用标准的greater<>, less<>模板,解决方法如下

// using lambda to compare elements.
auto compare = [](int lhs, int rhs)
            {
                return lhs < rhs;
            };

std::priority_queue<int, std::vector<int>, decltype(compare)> q(compare);

//struct
struct CustomCompare
{
    bool operator()(const int& lhs, const int& rhs)
    {
        return lhs < rhs;
    }
};
priority_queue<int,vector<int>, CustomCompare > pq;


三、value_type

这种c++很多特性都是因为要使用template进行泛型编程,value_type就是用来确定一个容器中的元素的属性

template<typename Container>
typename Container::value_type sum(const Container& cont)
{
    typename Container::value_type total = 0;
    for (const auto& e : cont)
        total += e;
    return total;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值