Sirius' blog Sirius' blog
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Sirius0v0

怕什么真理无穷,进一寸有一寸的欢喜
首页
  • 学习笔记

    • 《C++》
    • 《MATLAB》
    • 《Python》
  • 学习笔记

    • 《Git》
    • 《CMake》
  • 技术文档
  • 博客搭建
  • 学习
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础

  • Cpp小记
  • C++学习笔记-220705-V1
  • 进阶

    • CC++模板
    • CC++STL-常用容器
    • CC++STL-函数对象
    • CC++STL-常用算法
      • 遍历算法
        • for_each
        • transform
      • 查找算法
        • find
        • find_if
        • adjacent_find
        • binary_search
        • count
        • count_if
      • 排序算法
        • sort
        • random_shuffle
        • merge
        • reverse
      • 拷贝和替换算法
        • copy
        • replace
        • replace_if
        • swap
      • 算术生成算法
        • accumulate
        • fill
      • 集合算法
        • set_intersection
        • set_union
        • set_difference
    • 现代C++:常量、变量与类型推导
    • 现代C++:函数式编程(lambda、函数对象包装器)
    • 现代C++:右值引用、移动语义与完美转发
    • 现代C++:智能指针
    • C++11多线程编程
  • 奇思妙用

  • 库的使用

  • 《C++》学习笔记
  • 进阶
Sirius0v0
2023-07-13
目录

CC++STL-常用算法

# C/C++:STL-常用算法

算法主要是由头文件<algorithm>,<functional>,<numeric>组成

# 遍历算法

# for_each

std::for_each(beg, end, _func);

# transform

std::transform(beg1, end1, beg2, _func);

注意搬运前需要提前开辟空间。

# 查找算法

# find

std::find(beg, end, value);

查找自定义类型的时候,需要重载==

# find_if

std::find_if(beg, end, _func);

# adjacent_find

查找相邻重复元素,如果找到则返回第一个元素的迭代器

std::adjacent_find(beg, end);

拓展:

可以查找第一个开始不是递增的元素:

std::adjacent_find(beg, end, greater<int>());

# binary_search

二分法查找元素是否存在

bool std::binary_search(beg, end, value);

序列必须有序

# count

std::count(beg, end, value);

# count_if

std::count_if(beg, end, _func);

# 排序算法

# sort

std::sort(beg, end[, _Pred]);

# random_shuffle

std::random_shuffle(beg, end);

# merge

std::merge(beg1, end1, beg2, end2, iterator dest);

注意!两个容器元素必须是有序且同序的

# reverse

std::reverse(beg, end);

# 拷贝和替换算法

# copy

std::copy(beg, end, dest);

# replace

std::replace(beg, end, oldvalue, newvalue);

# replace_if

std::reverse(beg, end, _Pred, newvalue);

# swap

std::reverse(container c1, container c2);

两种容器的类型要一致

# 算术生成算法

使用时包含头文件<numeric>

# accumulate

std::accumulate(beg, end, value);
  • value是起始累加值

# fill

std::fill(beg, end, value);

# 集合算法

# set_intersection

求交集,需要两个集合必须是有序序列

std::reverse(beg1, end1, beg2, end2, dest);

# set_union

求并集,需要两个集合必须是有序序列

std::reverse(beg1, end1, beg2, end2, dest);

# set_difference

求差集,需要两个集合必须是有序序列

std::reverse(beg1, end1, beg2, end2, dest);
编辑 (opens new window)
#Cpp
上次更新: 2023/08/15, 01:36:48
CC++STL-函数对象
现代C++:常量、变量与类型推导

← CC++STL-函数对象 现代C++:常量、变量与类型推导→

最近更新
01
ipopt优化库配置及使用
07-21
02
ubuntu离线安装包的方法
07-21
03
其它控件的使用
03-05
更多文章>
Theme by Vdoing | Copyright © 2020-2024 Sirius0v0 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式