QT学习笔记(十):通用算法示例

std是C++标准库统一使用的命名空间(namespace)的名称,C++标准库中的名字全部都在std这个命名空间中,std也就是英文"standard"(标准)的缩写。

#include <QCoreApplication>
#include <QVector>
#include <QStringList>
#include <QDebug>#include <functional> //因为用了std::greater<int>()
#include <algorithm>  // STL 标准模板算法库  int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QStringList list;list << "one" << "two" << "three";// 1、将list中所有项目复制到vect中qDebug() << QObject::tr("std::copy算法:");QVector<QString> vect(3);std::copy(list.begin(), list.end(), vect.begin());qDebug() << vect;//结果为one,two,three///2、从list的开始到结束的所有项目与vect的开始及其后面的等数量的项目进行比较,// 全部相同则返回trueqDebug() << endl << QObject::tr("std::equal算法:");bool ret1 = std::equal(list.begin(), list.end(), vect.begin());qDebug() << "euqal: " << ret1; //结果为true// 3、从list中查找"two",返回第一个对应的值的迭代器,如果没有找到则返回end()qDebug() << endl << QObject::tr("std::find算法:");QList<QString>::iterator i = std::find(list.begin(), list.end(), "two");qDebug() << *i;     // 结果为"two"///4、将list中的所有项目填充为"eleven"qDebug() << endl << QObject::tr("std::fill算法:");std::fill(list.begin(), list.end(), "eleven");qDebug() << list;  // 结果eleven,eleven,elevenQList<int> list1;list1 << 3 << 3 << 6 << 6 << 6 << 8;// 5、查找6的个数qDebug() << endl << QObject::tr("std::count算法:");int countOf6 = std::count(list1.begin(), list1.end(), 6);qDebug() << "countOf6: " << countOf6; // 结果为3// 6、返回第一个出现5的位置,如果没有5,则返回5应该在的位置,// list1被查找的范围中的项目必须是升序qDebug() << endl << QObject::tr("std::lower_bound算法:");QList<int>::iterator j = std::lower_bound(list1.begin(), list1.end(), 5);list1.insert(j, 5);qDebug() << list1; // 结果3,3,5,6,6,6,8QList<int> list2;list2 << 33 << 12 << 68 << 6 << 12;//7、使用快速排序算法对list2进行升序排序,排序后两个12的位置不确定qDebug() << endl << QObject::tr("std::sort算法:");std::sort(list2.begin(), list2.end());qDebug() << list2; // 结果6,12,12,33,68// 8、使用一种稳定排序算法对list2进行升序排序,// 排序前在前面的12,排序后依然在前面qDebug() << endl << QObject::tr("std::stable_sort算法:");std::stable_sort(list2.begin(), list2.end());qDebug() << list2; // 结果6,12,12,33,68///9、可以在qSort()算法中使其反向排序(替代std::sort)qDebug() << endl << QObject::tr("std::greater算法:");qSort(list2.begin(), list2.end(), std::greater<int>());qDebug() << list2; // 结果68,33,12,12,6// 10、交换pi和e的值qDebug() << endl << QObject::tr("std::swap算法:");double pi = 3.14;double e = 2.71;std::swap(pi, e);                         qDebug() << "pi:" << pi << "e:" << e; // 结果pi=2.71,e=3.14return a.exec();
}

运行结果:

QT学习笔记(十):通用算法示例相关推荐

  1. Qt学习笔记(十八):QListWidget 的常用方法

    向列表中添加数据:共有三种方式 1.void QListWidget::addItem(const QString & label):直接向列表中添加文本信息: QListWidget *li ...

  2. QT学习笔记(十六):setwindowflags的属性总结

    QT学习笔记(十六):setwindowflags的属性总结 此枚举类型用于为小部件指定各种窗口系统属性.它们是不常用的,但在一些情况下是必要的.其中一些标志取决于底层窗口管理器是否支持它们. 主要类 ...

  3. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  4. QT学习笔记(十二):透明窗体设置

    QT学习笔记(十二):透明窗体设置 创建 My_Widget 类 基类为QWidget , My_Widget.cpp 源文件中添加代码 #include "widget.h" # ...

  5. QT学习笔记(六):Qt5主窗口框架示例

    QT学习笔记(五):Qt5主窗口框架代码示例 一.添加编辑菜单:并在下拉菜单和工具栏中添加"打开文件"动作菜单 #include <QToolButton> #incl ...

  6. QT学习笔记(五):Qt5的8种标准对话框示例

    QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...

  7. QT学习笔记(九):遍历容器-迭代器(iterators)

    QT学习笔记(九):遍历容器-迭代器(iterators) 遍历容器 : 1.Jave风格: 2.STL风格: 3.foreach 关键字: 遍历容器 : 遍历一个容器可以使用迭代器(iterator ...

  8. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  9. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

最新文章

  1. SQLHELPER C#
  2. Java创建一个文件变量_java如何定义一个类,创建它的成员变量和方法?
  3. 在双向链表存储结构中,删除p所指的结点时,须修改指针()【选择题】
  4. 经典java程序员的面试题及答案
  5. 计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...
  6. python循环报数游戏_报数游戏python 解答
  7. JAVA练习173-幂集
  8. js java 乱码_js和java 中文乱码
  9. QT的Q3DScatter使用(三维可视图)
  10. 城市信息学其五-空间经济学、城市信息学、和交通便利
  11. 2022安全员-C证考试题库及答案
  12. 2019考研英语熟词生义
  13. 【SaaS培训认证】AWS Solutions Architect Associate
  14. ArcEngine中的ICommand接口和ITool接口
  15. CSDN无法上传资源解决方法
  16. 投资有赞知乎,百度App日活突破2亿,百度要回归产品公司?
  17. 从一个表格render方法问题看React函数组件的更新
  18. php如何打开excel文件,如何使用php获取excel文件数据
  19. 荣耀十支持鸿蒙OS,不是所有华为荣耀手机都能升级华为鸿蒙OS,只有这48款才行...
  20. ajax调用ashx页面内的方法

热门文章

  1. java部署jar还是war优劣_详解Spring Boot 部署jar和war的区别
  2. android studio电影院选座,8排电影院选座最佳位置
  3. 论文浅尝 - WSDM20 | 基于弱监督及逐步推理的多关系知识图谱问答
  4. paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键
  5. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
  6. DSSM、CNN-DSSM、LSTM-DSSM等深度学习模型在计算语义相似度上的应用+距离运算
  7. DTW动态时间规整算法
  8. 干货 | 搞定用户画像只需5个步骤
  9. javascript的性能优化
  10. Android Studio 设置字体