struct SIndexDataNew
{
1 optional short shtMarket;
2 optional string sCode;
3 optional int iDate;
4 optional map<string, double> mField;
5 optional int iTime = 0; //指标时间格式:HHMMSS,仅对分钟级别指标有效
6 optional string sName;
}; struct SIndexNew
{
1 optional vector<SIndexDataNew> vData;
}; //需求:SIndexDataNew.vData 按用户传入的排序字段(mField 中的key), 进行排序。 //解决方法:使用 c++ Lambda 表达式 bool SIndexNewSortField(const string &sSortField, const int iSortType, const int iNum, SIndexNew &sIndexNew)
{
try
{
TLOG_DEBUG("begin SIndexNewSortField, sSortField:" << sSortField << "|" << "iSortType:" << iSortType << endl);
if (!sSortField.empty())
{
switch (iSortType)
{
case 0: //倒序
{
sort(sIndexNew.vData.begin(), sIndexNew.vData.end(), [&](SIndexDataNew lhs, SIndexDataNew rhs){return lhs.mField[sSortField] > rhs.mField[sSortField];}); // Lambda 表达式 按传入的 sSortField 排序
break;
}
case 1: //顺序
{
sort(sIndexNew.vData.begin(), sIndexNew.vData.end(), [&](SIndexDataNew lhs, SIndexDataNew rhs){return lhs.mField[sSortField] < rhs.mField[sSortField];}); // Lambda 表达式 按传入的 sSortField 排序
break;
}
}
SIndexNew sIndexNewTmp;
int iEndPos = iNum >= 0 ? min(iNum, (int)sIndexNew.vData.size()) : sIndexNew.vData.size();
for (int i = 0; i < iEndPos; i++)
{
sIndexNewTmp.vData.push_back(sIndexNew.vData[i]);
}
sIndexNew.vData.swap(sIndexNewTmp.vData);
}
}
catch (std::exception &ex)
{
TLOG_ERROR("exception:" << ex.what() << endl);
return false;
}
catch (...)
{
TLOG_ERROR("Unknown exception."<< endl);
return false;
}
return true;
}

  参见:https://www.cnblogs.com/DswCnblog/p/5629165.html

vector 使用 c++11 Lambda 表达式 排序的更多相关文章

  1. C++11 lambda 表达式

    C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lamb ...

  2. C++11 lambda 表达式解析

    C++11 新增了很多特性,lambda 表达式是其中之一,如果你想了解的 C++11 完整特性,建议去这里,这里,这里,还有这里看看.本文作为 5 月的最后一篇博客,将介绍 C++11 的 lamb ...

  3. 详解 C++11 lambda表达式

    详解 C++11 lambda表达式   lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的la ...

  4. lambda表达式排序

    lambda表达式排序简洁 1.给一个字符串数组: String[] atp = {"2016-06-28 08:00:00", "2017-12-05 19:17:32 ...

  5. C++11 lambda表达式学习

    lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的lambda表达式自己的认识.这里有参考文档h ...

  6. C++ 11 Lambda表达式

    C++11的一大亮点就是引入了Lambda表达式.利用Lambda表达式,可以方便的定义和创建匿名函数.对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多 ...

  7. C++ 11 Lambda表达式、auto、function、bind、final、override

    接触了cocos2dx 3.0,就必须得看C++ 11了.有分享过帖子:[转帖]漫话C++0x(四) —- function, bind和lambda.其实最后的Lambda没太怎么看懂. 看不懂没关 ...

  8. C++11 Lambda表达式简单解析

    C++11 新增了非常多特性,lambda 表达式是当中之中的一个.假设你想了解的 C++11 完整特性, 建议去http://www.open-std.org/看看新标准! 非常多语言都提供了 la ...

  9. C++11 lambda表达式(19篇C++11文章)

    C++11引入了lambda表达式,使得程序员可以定义匿名函数,该函数是一次性执行的,既方便了编程,又能防止别人的访问. Lambda表达式的语法通过下图来介绍: 这里假设我们定义了一个如上图的lam ...

随机推荐

  1. BZOJ3070 : [Pa2011]Prime prime power 质数的质数次方

    对于$a^b$,如果$b=2$,那么在$[\sqrt{n},\sqrt{n}+k\log k]$内必定能找到$k$个质数作为$a$. 筛出$n^{\frac{1}{4}}$内的所有质数,暴力枚举所有落 ...

  2. javaweb笔记

    (1)web项目需复制web.xml文件 (2)需要复制classes文件 需要把bin里面的com----复制到classes中

  3. Java 泛型 介绍

    为什么需要泛型? public class GenericTest { public static void main(String[] args) { List list = new ArrayLi ...

  4. Disruptor 详解

    想了解一个项目,最好的办法就是,把它的源码搞到本地自己捣鼓. 在网上看了 N 多人对 Disruptor 速度的吹捧,M 多人对它的机制分析,就连 Disruptor 官方文档中,也 NB 哄哄自诩: ...

  5. sql 索引笔记--索引组织结构

    非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非聚集键的顺序排序和存储. 非聚集索引的叶层是由索引页而不是由数据页组成. 既可以使用聚集索引来为表或视 ...

  6. Python3 与 NetCore 基础语法对比(List、Tuple、Dict、Set专栏)

    Jupyter最新版:https://www.cnblogs.com/dotnetcrazy/p/9155310.html 在线演示:http://nbviewer.jupyter.org/githu ...

  7. Kubernetes中的Configmap和Secret

    本文的试验环境为CentOS 7.3,Kubernetes集群为1.11.2,安装步骤参见kubeadm安装kubernetes V1.11.1 集群 应用场景:镜像往往是一个应用的基础,还有很多需要 ...

  8. Docker构建YApi镜像, Docker安装YApi, Docker部署YApi

    概述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布.维护 API,YApi 还为用户提供了优秀的交互体验,开发 ...

  9. 【MySQL】解决You can't specify target table 'user_cut_record_0413' for update in FROM clause

    问题 You can't specify target table 'user_cut_record_0413' for update in FROM clause 原因 待更新/删除的数据集与查询的 ...

  10. [Python设计模式] 第24章 加薪审批——职责链模式

    github地址:https://github.com/cheesezh/python_design_patterns 题目 用程序模拟以下情景 员工向经理发起加薪申请,经理无权决定,需要向总监汇报, ...