本篇介绍C++ STL中常用的几个函数

1.std::sort

1.1.sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以实现对数据的排序。

1.2.sort函数的模板有三个参数:

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。

1.3.实例

typedef struct student {

string name;

int math;

int english;

}Student;

// 用姓名排序

struct {

bool operator()(Student s1, Student s2) const

{

int nRet = s1.name.compare(s2.name);

if (nRet >= 0)

return false;

else

return true;

}

} cmpByName;

struct  {

bool operator()(Student s1, Student s2) const {

return s1.math >= s2.math;

}

} cmpByMath;

int main()

{

Student a[4] = { {"lilei",67,89},{"hanmeimei",90,56},{"lucy",91,99} };

std::sort(a, a + 3, cmp);

for (int i = 0; i < 3; i++)

cout << a[i].name << " " << a[i].math << " " << a[i].english << endl;

system("pause");

}

1.4.运行如下

2.std::remove_if

2.1函数申明:

remove_if(begin,end,op);

2.2remove_if的参数是迭代器,前两个参数表示迭代的起始位置和这个起始位置所对应的停止位置。

最后一个参数:传入一个回调函数,如果回调函数返回为真,则将当前所指向的参数移到尾部。

返回值是被移动区域的首个元素。

2.3remove_if在头文件algorithm中,故要使用此函数,需添加#include

2.4由于remove_if函数的参数是迭代器,通过迭代器无法得到容器本身,而要删除容器内的元素必须通过容器的成员函数来进行。

因而此函数无法真正删除元素,只能把要删除的元素移到容器末尾并返回要被删除元素的迭代器,然后通过erase成员函数来真正删除。因为一般remove_if和erase函数是成对出现的。

int main()

{

string inHexData = "30 39 33 30 31 30 31 30 31 30";

inHexData.erase(std::remove_if(inHexData.begin(), inHexData.end(), isspace), inHexData.end());

cout << inHexData << endl;

system("pause");

}

2.5示例

int main()

{

//string inHexData = "30 39 33 30 31 30 31 30 31 30";

//inHexData.erase(std::remove_if(inHexData.begin(), inHexData.end(), isspace), inHexData.end());

vector str = { "apple", "banana", "key", "cat", "dog", "orange", "banana" };

auto find_str = "banana";

str.erase(remove_if(str.begin(), str.end(), [find_str](string n) { return n == find_str; }), str.end());

for (auto iter = str.begin(); iter != str.end(); ++iter)

{

cout << *iter << " ";

}

system("pause");

}

2.6运行结果

c语言的erase函数,C++ STL标准库中sort,erase,remove_if函数的使用相关推荐

  1. php spl函数,PHP SPL标准库中的常用函数介绍

    这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...

  2. python中求和公式是什么函数_Python的math库中,用于求和的函数是( )。

    [单选题]确定兴利库容 V 兴 ,已知某水库为一回运用水库,其一次蓄水量为 V 1 =300 万 m 3 ,一次供水量为 V 2 =150 万 m 3 . [ ]. [单选题]hAB大于0说明B点的高 ...

  3. python中sort函数是什么意思_python中sort和sorted函数

    在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...

  4. c语言中vector函数大全,C++标准库之vector(各函数及其使用全)

    iterator类型: iterator:到value_type的访问,value_type是模板的类型 const_iterator:到const value_type的访问 reverse_ite ...

  5. C++STL标准库学习总结/索引/学习建议

    前言: 如果刚刚开始学习STL标准库,不知道从哪里入手学习的话,建议去中国大学mooc平台,先学习北京大学郭炜老师的<程序设计与算法(一)C语言程序设计>(https://www.icou ...

  6. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

  7. 【侯捷】C++STL标准库与泛型编程(第二讲)

    第二讲 应具备的基础 C++基本语法 模板(Template)基础 令你事半功倍 数据结构(Data Structures)和算法(Algorithms)概念 令你如鱼得水 书籍: <Algor ...

  8. C++ - STL标准库

    1.C++ STL标准库简介 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出"可重复运用的东西" 的方法,从函数(functions),类别(classes) ...

  9. 侯捷C++课程笔记03: STL标准库与泛型编程

    本笔记根据侯捷老师的课程整理而来:STL标准库与泛型编程 pdf版本笔记的下载地址: 笔记03_STL标准库与泛型编程,排版更美观一点(访问密码:3834) 侯捷C++课程笔记03: STL标准库与泛 ...

最新文章

  1. 电脑安装python为什么显示的是程序丢失-python报错:无法启动此程序,因为计算机中丢失...
  2. Mongodb 基本操作
  3. Python基础教程:用模块化来搭项目
  4. 信息系统项目管理师考前冲刺第一天:项目基础知识和立项管理
  5. async function_理解 Iterator, Generator 和 Async/Await
  6. lcd背光节能matlab代码,【技术分享】LCD背光驱动节电技术-LABC/CABC
  7. 6.04 从字符串中删除不需要的字符
  8. Redis 开发与运维
  9. zabbix 4.0监控mysql_从零开始搭建 Zabbix 4.0
  10. 百度AI学习:二、语音合成
  11. oracle 清除参数,IMp回去的时候要把原来的表的记录清空吗?没有什么参数可以省略这个吗...
  12. S3C2440裸机------GPIO
  13. Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
  14. 功能测试_测试用例设计方法
  15. mysql实习报告总结_MYSQL实训心得
  16. 第二章 51单片机硬件结构
  17. 教你快速高效接入SDK——手游聚合SDK的总体思路和架构
  18. 【托业】【跨栏】REVIEW2
  19. 2021-11-05 构型空间(关节空间)路径规划-1
  20. 关于mac 10.12.3 USB启动盘制作 分享

热门文章

  1. 恭喜开源社谭中意和庄表伟荣获“2022 年度开源优秀人物奖”
  2. 使用js控制input填写的限制,比如只能写数字和英文,不能输入中文
  3. 大数据-消息队列:Pulsar
  4. 在线数据库设计工具-toolfk程序员在线工具网
  5. 【森气杂谈】ENVI的NNDiffuse融合landsat多光谱和可见光波段
  6. Xampp+DVWA的安装过程
  7. 极米H6和当贝X3 Pro哪个好 哪个值得买
  8. dhcp协议服务器怎么设置,DHCP服务器配置详解
  9. ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device
  10. 帮G1刷新的hboot和radio