STL——常用算法

#include<algorithm>

遍历算法

for_each

for_each(iterator beg,iterator end,_func); //func为函数对象或者函数

transform

搬运容器到另一个容器中

transform(iterator beg1, iterator end1, iterator beg2, _func);

例如: transform(v.begin(), v.end(), vTarget.begin(), TransForm());

查找算法

find

find(iterator beg,iterator end,value);

//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器

find_if

按条件查找元素

find_if(iterator beg, iterator end, _Pred);

//_Pred 为函数或者谓词

//返回指定迭代器位置

adjacent_find

查找相邻重复元素

adjacent_find(iterator beg,iterator end);

//查找相邻重复元素,返回相邻元素的第一个位置的迭代器 —— beg开始迭代器,end结束迭代器

binary_search

查找指定元素是否存在,内部使用二分查找,必须针对有序序列,若是自定义类型,需要在类里面重载<或者是定义比较函数

count

统计元素个数,按值统计

count(iterator beg,iterator end,value);

count_if

按条件统计元素个数

count_if(iterator beg, iterator end, _Pred);

//_Pred谓词

排序算法

sort

sort(iterator beg,iterator end,_Pred); //谓词

random_shuffle

洗牌,随机调整次序

random_shuffle(iterator beg,iterator end);

记得调用随机数种子,如果要重复使用的话

srand((unsigned int)time(NULL));

merge

两个容器元素合并,并存储到另一个容器中

merge(iterator beg1,iteratore end1,iterator beg2,iterator end2,iterator dest);

//将容器1和容器2存储到目标容器中

//merge合并两个容器必须是有序的序列

reverse

对容器内元素进行反转

reverse(iterator beg, iterator end);

常见拷贝和替换算法

copy

copy(iterator beg,iterator end,iterator dest);

//注意,copy不会负责处理动态分配内存的分配和释放,即浅拷贝

//同时目标容器得提前开辟空间

replace

将区间内的旧元素替换为新元素

replace(iterator beg,iterator end,oldvalue,newvalue);

//把区间内旧元素替换为新元素

replace_if

将区间内满足条件的元素替换为指定元素

replace_if(iterator beg,iterator end,_pred,newvalue); //_pred谓词

swap

互换两个容器的元素,需要是同种类型的容器。

swap(container c1, container c2);

算数生成算法

包含的头文件为 #include<numeric>

accumulate

计算区间内容器元素累计总和

accumulate(iterator beg,iterator end,value);

//beg开始迭代器,end结束迭代器,value起始值

例如:int total = accumulate(v.begin(), v.end(), 0);

fill

向容器中填充指定元素

fill(iterator beg,iterator end,value); //value为填充的值

常用集合算法

set_intersection

求两个容器的交集——必须是有序序列

set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

dest为目标容器开始迭代器

目标容器开辟空间需从两个容器中取小值

set_union

求两个容器的并集——必须是有序序列

set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

dest为目标容器开始迭代器

目标容器开辟空间需要为两个容器相加

set_difference

求两个集合的差集

set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

两个集合必须是有序序列

有返回值,为差集中最后一个元素的位置。,方便锁定到有效部分

相关推荐

  1. STL——算法

    2024-05-11 09:32:11       13 阅读
  2. STL - 算法

    2024-05-11 09:32:11       7 阅读
  3. STL——算术生成算法

    2024-05-11 09:32:11       39 阅读
  4. C++ STL拷贝算法和替换算法

    2024-05-11 09:32:11       33 阅读
  5. 第二十五章 STL- 算法

    2024-05-11 09:32:11       35 阅读
  6. C++ 的标准模板库(STL算法介绍

    2024-05-11 09:32:11       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 09:32:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 09:32:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 09:32:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 09:32:11       20 阅读

热门阅读

  1. html的i标签 “\e905“ font-family 字体没有效果

    2024-05-11 09:32:11       11 阅读
  2. 学习Uni-app开发小程序Day7

    2024-05-11 09:32:11       8 阅读
  3. 在linux中学会安装与基本配置redis

    2024-05-11 09:32:11       11 阅读
  4. 在Ubuntu下搭建自己的以太坊私有链

    2024-05-11 09:32:11       11 阅读
  5. 使用Azure云服务部署你的第一个应用

    2024-05-11 09:32:11       10 阅读