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. error: RPC failed

    error: RPC failed error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function. fa ...

  2. python中 is 和 == 的区别

    is 是比较两个引用是否指向了同一个对象(引用比较). == 是比较两个对象是否相等.

  3. SDN+DPI文献阅读(2)

    A Sophisticated Packet Forwarding Scheme with Deep Packet Inspection in an OpenFlow Switch 来源:Intern ...

  4. SpringMVC(2)—SpringMVC整合Spring的HelloWorld

    一.这是一个SpringMVC框架的案例HelloWorld 功能:HelloWorld 二.SpringMVC运行流程 1.流程 请求-->springDispatcherServlet的ur ...

  5. Linux目录/usr缩写及目录结构说明

    在 linux 文件结构中,有一个很神奇的目录 —— /usr.   讨论中,大部分观点认为:   usr 是 unix system resources 的缩写: usr 是 user 的缩写: u ...

  6. 用GO开发企业级分布式云存储系统

    一.基础架构 二.开发工具

  7. 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=i5j7gwrxj9x5

  8. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替

    /// <summary> /// 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替换 /// </summary&g ...

  9. centos7磁盘挂载及取消

    磁盘挂载查看已经挂载磁盘数 cat /proc/scsi/scsi | grep HostHost: scsi1 Channel: 00 Id: 00 Lun: 00Host: scsi2 Chann ...

  10. 20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 ...