算法

收藏381

阅读937

更新时间2025-08-05

C++ 算法库

在前面的章节中,你已经了解到数据结构(如向量、列表等)用于存储和组织数据。

算法则用于通过排序、搜索和操作数据结构来解决问题。

库提供了许多有用的函数,可以通过迭代器来执行这些任务。

要使用这些函数,你必须包含 头文件:

// 包含算法库
#include 

排序算法

要对数据结构中的元素进行排序,你可以使用 sort() 函数。

sort() 函数以迭代器作为参数(通常是由 begin() 返回的起始迭代器和由 end() 返回的结束迭代器):

实例

// 创建一个名为 cars 的字符串向量
vector cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 按字母顺序排序 cars
sort(cars.begin(), cars.end());
运行实例 »

点击 "运行实例" 按钮查看在线实例

默认情况下,元素按升序排列。在上面的示例中,由于元素是字符串,所以按字母顺序排序。

如果我们有一个整数向量,则会按数值排序:

实例

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 按数值排序 numbers
sort(numbers.begin(), numbers.end());
运行实例 »

点击 "运行实例" 按钮查看在线实例

要反转排序顺序,可以使用 rbegin()rend() 代替 begin()end()

实例

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 按数值降序排序 numbers
sort(numbers.rbegin(), numbers.rend());
运行实例 »

点击 "运行实例" 按钮查看在线实例

如果只想对特定元素进行排序,可以这样写:

实例

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 从第四个元素开始按数值排序(仅排序 5、9 和 2)
sort(numbers.begin() + 3, numbers.end());
运行实例 »

点击 "运行实例" 按钮查看在线实例

搜索算法

要在向量中搜索特定元素,可以使用 find() 函数。

它接受三个参数:start_iteratorend_iteratorvalue,其中 value 是要搜索的值:

实例

在 "numbers" 中搜索数字3:

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 搜索数字 3
auto it = find(numbers.begin(), numbers.end(), 3);
运行实例 »

点击 "运行实例" 按钮查看在线实例

要搜索第一个大于特定值的元素,可以使用 upper_bound() 函数:

实例

在 "numbers" 中查找第一个大于 5 的值:

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 将向量按升序排序
sort(numbers.begin(), numbers.end());

// 在已排序的向量中查找第一个大于 5 的值
auto it = upper_bound(numbers.begin(), numbers.end(), 5);
运行实例 »

点击 "运行实例" 按钮查看在线实例

upper_bound() 函数通常用于已排序的数据结构。这就是为什么我们在上面的示例中首先对向量进行排序。

要查找向量中的最小元素,可以使用 min_element() 函数:

实例

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 查找最小的数字
auto it = min_element(numbers.begin(), numbers.end());
运行实例 »

点击 "运行实例" 按钮查看在线实例

要查找最大的元素,可以使用 max_element() 函数:

实例

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 查找最大的数字
auto it = max_element(numbers.begin(), numbers.end());
运行实例 »

点击 "运行实例" 按钮查看在线实例

修改算法

要将元素从一个向量复制到另一个向量,可以使用 copy() 函数:

实例

将元素从一个向量复制到另一个向量:

// 创建一个名为 numbers 的整数向量
vector numbers = {1, 7, 3, 5, 9, 2};

// 创建一个名为 copiedNumbers 的向量,用于存储6个整数
vector copiedNumbers(6);

// 将元素从 numbers 复制到 copiedNumbers
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());
运行实例 »

点击 "运行实例" 按钮查看在线实例

要用一个值填充向量中的所有元素,可以使用 fill() 函数:

实例

用值 35 填充 numbers 向量中的所有元素:

// 创建一个名为 numbers 的向量,用于存储6个整数
vector numbers(6);

// 用值 35 填充 numbers 向量中的所有元素
fill(numbers.begin(), numbers.end(), 35);
运行实例 »

点击 "运行实例" 按钮查看在线实例

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号