c语言的erase函数,C++ STL标准库中sort,erase,remove_if函数的使用
本篇介绍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函数的使用相关推荐
- php spl函数,PHP SPL标准库中的常用函数介绍
这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...
- python中求和公式是什么函数_Python的math库中,用于求和的函数是( )。
[单选题]确定兴利库容 V 兴 ,已知某水库为一回运用水库,其一次蓄水量为 V 1 =300 万 m 3 ,一次供水量为 V 2 =150 万 m 3 . [ ]. [单选题]hAB大于0说明B点的高 ...
- python中sort函数是什么意思_python中sort和sorted函数
在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...
- c语言中vector函数大全,C++标准库之vector(各函数及其使用全)
iterator类型: iterator:到value_type的访问,value_type是模板的类型 const_iterator:到const value_type的访问 reverse_ite ...
- C++STL标准库学习总结/索引/学习建议
前言: 如果刚刚开始学习STL标准库,不知道从哪里入手学习的话,建议去中国大学mooc平台,先学习北京大学郭炜老师的<程序设计与算法(一)C语言程序设计>(https://www.icou ...
- C++拾取——使用stl标准库实现排序算法及评测
今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...
- 【侯捷】C++STL标准库与泛型编程(第二讲)
第二讲 应具备的基础 C++基本语法 模板(Template)基础 令你事半功倍 数据结构(Data Structures)和算法(Algorithms)概念 令你如鱼得水 书籍: <Algor ...
- C++ - STL标准库
1.C++ STL标准库简介 长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出"可重复运用的东西" 的方法,从函数(functions),类别(classes) ...
- 侯捷C++课程笔记03: STL标准库与泛型编程
本笔记根据侯捷老师的课程整理而来:STL标准库与泛型编程 pdf版本笔记的下载地址: 笔记03_STL标准库与泛型编程,排版更美观一点(访问密码:3834) 侯捷C++课程笔记03: STL标准库与泛 ...
最新文章
- 电脑安装python为什么显示的是程序丢失-python报错:无法启动此程序,因为计算机中丢失...
- Mongodb 基本操作
- Python基础教程:用模块化来搭项目
- 信息系统项目管理师考前冲刺第一天:项目基础知识和立项管理
- async function_理解 Iterator, Generator 和 Async/Await
- lcd背光节能matlab代码,【技术分享】LCD背光驱动节电技术-LABC/CABC
- 6.04 从字符串中删除不需要的字符
- Redis 开发与运维
- zabbix 4.0监控mysql_从零开始搭建 Zabbix 4.0
- 百度AI学习:二、语音合成
- oracle 清除参数,IMp回去的时候要把原来的表的记录清空吗?没有什么参数可以省略这个吗...
- S3C2440裸机------GPIO
- Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
- 功能测试_测试用例设计方法
- mysql实习报告总结_MYSQL实训心得
- 第二章 51单片机硬件结构
- 教你快速高效接入SDK——手游聚合SDK的总体思路和架构
- 【托业】【跨栏】REVIEW2
- 2021-11-05 构型空间(关节空间)路径规划-1
- 关于mac 10.12.3 USB启动盘制作 分享
热门文章
- 恭喜开源社谭中意和庄表伟荣获“2022 年度开源优秀人物奖”
- 使用js控制input填写的限制,比如只能写数字和英文,不能输入中文
- 大数据-消息队列:Pulsar
- 在线数据库设计工具-toolfk程序员在线工具网
- 【森气杂谈】ENVI的NNDiffuse融合landsat多光谱和可见光波段
- Xampp+DVWA的安装过程
- 极米H6和当贝X3 Pro哪个好 哪个值得买
- dhcp协议服务器怎么设置,DHCP服务器配置详解
- ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device
- 帮G1刷新的hboot和radio