千家信息网

C++ STL中常用算法怎么使用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"C++ STL中常用算法怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++ STL中常用算法怎么使用"吧!前言在C++中
千家信息网最后更新 2025年11月07日C++ STL中常用算法怎么使用

这篇文章主要讲解了"C++ STL中常用算法怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C++ STL中常用算法怎么使用"吧!

前言

在C++中使用STL算法都要包含一个算法头文件 #include

这样我们才能使用这个STL算法函数

sort()排序

  • Sort函数包含在头文件为#include的c++标准库中,是一个专门用来排序的高效的函数,我们在解决问题时可以方便快捷的排列顺序。

  • sort()函数中有三个参数,(数组首地址;需要结束的地址;排列方式)

第三个排列方式可以不写,系统会默认为从小到大;

让我们来看一下真实的案例

1.如果我们想从大到小排序,可以不写第三个参数

eg:

#include #include//sort()函数所需头文件  using namespace std; int main() {          int a[10]={4,5,9,3,8,2,1,4,0,3};//初始化数组                   for(int i=0;i<10;i++)                    cout<

运行结果

2.当然,如果我们不想排完整个数组,只想将前几位从大到小排序也是可以的

Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则

less<数据类型>()//从小到大排序

greater<数据类型>()//从大到小排序

eg:

#include #include  using namespace std; int main() {          int a[10]={4,5,9,3,8,2,1,4,0,3};//初始化数组                   for(int i=0;i<10;i++)                    cout<());//没有第三个参数,系统默认从小到大排序                   for(int i=0;i<10;i++)                  {           cout<

常用遍历算法for_each()

for_each()是一个常用的遍历算法

它的使用除迭代器外还需要包含仿函数或者普通函数来帮助他输出遍历结果,

eg:

#include#include#includeusing namespace std;//常用遍历算法for_each//普通函数void print01(int val){        cout<v1;        for(int i=0;i<10;i++)        {                v1.push_back(i);//尾插法         }        for_each(v1.begin(),v1.end(),print01);//利用普通函数遍历         cout<

常用遍历算法 搬运transform()

使用方式与for_each()类似,它的使用除迭代器外还需要包含仿函数或者普通函数来帮助他输出遍历结果,

#include#include#includeusing namespace std;//常用遍历算法  搬运transform  //仿函数 class Transform {   public:           int operator()(int val)           {                        return val;                }  } ;    //仿函数 class print02 {   public:           void operator()(int val)           {                        cout<v1;//原容器         for(int i=0;i<10;i++)        {                v1.push_back(i);//尾插法         }        vectortarget;//目标容器                 target.resize(v1.size());//提前给target目标容器开辟容量                 transform(v1.begin(),v1.end(),target.begin(),Transform());//返回v1*10                 for_each(target.begin(),target.end(),print02());//利用仿函数遍历 }int main(){        test01();  }

查找算法find

功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end();

#include#include#include#includeusing namespace std;//查找内置数据类型 void test01(){        vectorv1;        for(int i=0;i<10;i++)        {                v1.push_back(i);//尾插法         }        vector::iterator it=find(v1.begin(),v1.end(),5);         if(it==v1.end())        {                cout<<"没有找到"<

删除操作erase()

删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束

a.erase(a.begin()+1,a.begin()+3);

erase()有三种用法

(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

实例应用

讲了这么多的算法,合理的使用它们,会极大简化我们的代码量和工作量;

下面我们就用这些算法函数来解决一道题;

(1)常规解法代码量大且容易出错

#include#includeint main(){        char s1[100];        gets(s1);        char s2[100];        gets(s2);        int len1,len2;//字符串长度        len1=strlen(s1);        len2=strlen(s2);        int i,j,k;//循环变量        int flag=1;//控制while循环        int f;//判断是否删除        while(flag)                for(i=0; i

(2)STL算法解题

我们使用上面讲到的两种算法来解决这个问题

#include#includeusing namespace std;int main(){    string s1, s2;    getline(cin, s1);            //行输入    getline(cin, s2);    while (s1.find(s2) < s1.length())        //判断S1中是否还存在S2    {        s1=s1.erase(s1.find(s2), s2.length());        //将S1中的S2删除掉    }    cout << s1 << endl;    return 0;}

使用STL解决问题高效又快捷

感谢各位的阅读,以上就是"C++ STL中常用算法怎么使用"的内容了,经过本文的学习后,相信大家对C++ STL中常用算法怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

函数 算法 常用 字符 排序 三个 迭代 C++ 参数 普通 从小到大 从小 元素 问题 循环 容器 数组 文件 方式 案例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 四川网络安全比赛 计算机网络技术就业地区 只画网络安全知识的手抄报 个人服务器diy方案 宝鸡市网络安全和信息化委员会 汽车网络安全芯片大会 显示无法访问服务器006 珠海塑胶模具erp软件开发 虚拟货币网站服务器租用 黄平软件开发有限公司 开展网络安全演练的通知 如何复制粘贴表格中数据库 网络安全知识 小学 河北服务器电源哪家靠谱 风力发电机软件开发 求生之路2国外服务器 手机阿里云服务器进入安全模式 芜湖电力软件开发多少钱 网络安全龙头股票一览表2021 数据库技术中的脏数据 数据库中蕴含的思政元素 技校计算机网络技术就业方向 网络技术历史发展 测试服务器中间件 文件服务器和数据库数据清理 移动应用软件开发是什么意思 网络安全审查认证中心王连印 ibm3850x5服务器尺寸 怎么查看本机的服务器ip地址 数据库取消外键1091
0