今天心血来潮,尝试玩一下c++11。话说这个标准都发布好几年了,c++14都出来了,c++17也快生出来了,还是赶紧摸一下c++11。本文使用实际业余工程使用到的代码片段,参考文章《stl::vector排序二例》。

示例1:

#include <vector>
#include <string>
#include <algorithm>#include <stdio.h>class foobar
{
public:std::string token;std::string item;int number;// 重载操作符bool operator<(const foobar& rhs) { return (*this).token < rhs.token;};bool operator>(const foobar& rhs) { return (*this).token > rhs.token;};bool operator==(const foobar& rhs) { return (*this).token == rhs.token;}};int struct_element_sort(int argc, char* argv[])
{std::vector<foobar> vFo1o;std::vector<foobar> vFoo = {{"osd_1", "OSD111", 1},{"osd_0", "OSD000", 0},{"osd_2", "OSD222", 2},{"osd_4", "OSD444", 4},{"osd_3", "OSD333", 3},{"osd_1", "OSD100100", 100},};printf("before sort: \n");for (auto& val : vFoo){printf("token: %s font: %d item: %s\n", val.token.c_str(), val.number, val.item.c_str());}// lambda表达式,升序std::sort(vFoo.begin(),vFoo.end(),[](const foobar& s1, const foobar& s2){ return s1.token.compare(s2.token) < 0; });printf("after sort--: \n");for (auto& val : vFoo){printf("token: %s font: %d item: %s\n", val.token.c_str(), val.number, val.item.c_str());}std::vector<foobar>::iterator unque_it  = std::unique(vFoo.begin(), vFoo.end());vFoo.erase(unque_it, vFoo.end());printf("after unque: \n");for (auto& val : vFoo){printf("token: %s font: %d item: %s\n", val.token.c_str(), val.number, val.item.c_str());}return 0;
}

示例2:


// 普通字符串
// 分辨率 降序,即大的分辨率在前面
bool sort_res(const std::string& s1, const std::string& s2)
{//return s1.compare(s2) < 0;int width1 = 0;int height1 = 0;int width2 = 0;int height2 = 0;sscanf(s1.c_str(), "%dx%d", &width1, &height1);sscanf(s2.c_str(), "%dx%d", &width2, &height2);// 宽相等,则比较高if (width1 == width2){return height1 > height2;}else {return width1 >width2;}return true;
}int sort_string()
{std::vector<std::string> foo = {"1920x1080","1280x720","1920x1000","720x576","720x1080",};std::sort(foo.begin(), foo.end(), sort_res); // 复杂的就不用lambdaprintf("after sort: \n");for (auto val : foo){printf("resolution: %s\n", val.c_str());}return 0;
}

总结一下:

1、auto特性在遍历复杂的容器时,可以节省不少代码量。

2、使用基于范围的for循环遍历容器,也能节省代码量。

3、在一些场合下使用lambda,代码更精简。

李迟 2016.8.2 周二晚

心血来潮,小试c++11相关推荐

  1. 小试debian-7.11.0-amd64+Plone5.1.2全文检索和预览中文WORD中文PDF

    先劝诫提醒一下,没接触过Plone的老铁们最好就不要往下看了,哈哈.易度的老潘写的两篇文章讲透了Zope/Plone有多糟心 (知乎上的)https://www.zhihu.com/question/ ...

  2. 机器学习小试(11)验证码识别测试-使用Qt与Tensorflow2进行深度学习实验

    由于非常熟悉native C开发,学习Python的过程中还老是忘不了Qt, 准备用Qt产生训练样本.而后,使用Qt的GUI在后台调用python进行实验.当然,这个路子已经Out了,现在不少人转去p ...

  3. 小试Plone-5.1.6下用collective.celery支持collective.documentviewer 5.0.4的异步转换,效果仍不理想

    ---------------------------------------------------------------------------------------------------- ...

  4. Windows 11 增长停滞,或与过高的硬件需求有关

    整理 | 张仕影 出品 | CSDN(ID:CSDNnews) 根据 AdDuplex 三月份的统计数据显示,Windows 10 仍然在微软的粉丝中占据主导地位. 今年 1 月,微软官方曾表示,Wi ...

  5. 2021.11.27月赛题解

    目录 A-可以教学姐画画嘛QAQ B-yh学长的养猪场 C-可以帮学姐通关吗 D-宝藏男孩zks E-为了lh学长!冲鸭! F-可以收下lh学长的小心心♥嘛~~~ G-金身已成,只待渡劫! A-可以教 ...

  6. TensorFlow RunTime(TFRT) 小试

    文章目录 前言 一.编译流程 二.验证流程 1.编译工具 2.测试验证 4.25号更新 前言 最近几天试了试 TensorFlow RunTime(TFRT),优劣就不讲了,官方文档说得很详细了.TF ...

  7. Windows8/Silverlight/WPF/WP7周学习导读(11月12日-11月18日)

    Windows8/Silverlight/WPF/WP7/HTML5周学习导读(11月12日-11月18日) 本周Windows 8开发学习资源更新 快速构建Windows 8风格应用25-数据绑定 ...

  8. [eCharts,angularjs]echarts小试-龙虎榜数据显示

    echarts小试-龙虎榜数据显示 echarts代码段: 1 $scope.makeJson = function(){ // 数据整理 2 var jsonData = { 3 nodes:[] ...

  9. Java研发小试(面试题)

    把项目中用到的整理了下,大家小试一下吧,答案我就屏蔽了,感兴趣应该都能百度到 ---------------后台 -------------------: 1.跨站脚本攻击XSS 和 CSRF跨站点请 ...

最新文章

  1. 微信小程序爬虫python_爬虫爬取微信小程序
  2. js css3实现tab,div+css+js实现tab页
  3. 细菌基因组基本概念(一)
  4. java.util.List 的大小
  5. Apache Thrift 环境配置
  6. 三路划分快速排序 java_程序员面试—快速排序的三路划分
  7. 大数据收集系统架构图
  8. 让你提前认识软件开发(39):软件研发之殇
  9. JAVA前端修改密码,Java Web版SVN 配置管理工具 2.0 (远道建立仓库,修改密码,设置权限,支持apache等)...
  10. phpoffice 编辑excel文档
  11. 我为Bill Gates熬夜加班的那个晚上
  12. SpreadJS表格中关于下拉框new GC.Spread.Sheets.CellTypes.ComboBox()的设置和使用
  13. 申请 NVIDIA vGPU 90天试用 LICENSE
  14. NS2协议分析与仿真
  15. 解决连接mysql数据库出现Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server tim
  16. STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现
  17. 企微整合,钉钉进化,飞书抢占toB下半场
  18. 静态页面练习——百度搜索页面
  19. PyQt5教程(五)——Eric6的配置(最详细)
  20. NOIP 2017 Day1 T2 时间复杂度 complexity - 模拟题 题解

热门文章

  1. SQL Server安装问题程序被挂起的错误解决办法
  2. 全球第一!苹果市值冲破3万亿美元 创历史记录
  3. 华为又有大动作!继鸿蒙之后,即将发布全新操作系统OpenEuler欧拉
  4. 美柚或赴境外IPO 阿里京东等为其客户
  5. 台积电晶圆14A厂周三曾因断电而部分停产 预计损失不低于2800万美元
  6. 掏出来的“耳屎经济”
  7. 比尔盖茨:若新冠病毒疫苗有效 富裕国家在2021年底恢复正常
  8. 会买单吗?李楠创办的怒喵科技发布新品牌了,推出潮流无线桌面产品
  9. 金山云和金山办公均成功上市 雷军揭秘背后原因
  10. 威马董事长沈晖隔空喊话王兴:威马一定会是Top3之一