Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ If...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 范围 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何做

C++ 添加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 例子

C++ 例子 C++ 现实例子 C++ 编译器 C++ 练习 C++ 测验 C++ 证书


C++ 算法


C++ 算法

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

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

<algorithm> 库提供了许多有用的函数来使用 迭代器 执行这些任务。

要使用这些函数,您必须包含 <algorithm> 头文件

// 包含算法库
#include <algorithm>

排序算法

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

sort() 函数采用 迭代器(通常是 begin() 返回的起始迭代器end() 返回的结束迭代器)作为参数

示例

// 创建一个名为 cars 的向量,用于存储字符串
vector<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 按字母顺序排序 cars
sort(cars.begin(), cars.end());
自己尝试 »

默认情况下,元素按升序排序。在上面的示例中,元素按字母顺序排序,因为它们是字符串。

如果我们有一个整数向量,它们将按数字顺序排序

示例

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

// 按数字顺序排序 numbers
sort(numbers.begin(), numbers.end());
自己尝试 »

要反转顺序,可以使用 rbegin()rend(),而不是 begin()end()

示例

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

// 按反序数字顺序排序 numbers
sort(numbers.rbegin(), numbers.rend());
自己尝试 »

要只排序特定元素,可以写

示例

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

// 按数字顺序排序 numbers,从第四个元素开始(只排序 5、9 和 2)
sort(numbers.begin() + 3, numbers.end());
自己尝试 »

搜索算法

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

它采用三个参数:start_iterator, end_iterator, value,其中value是要搜索的值

示例

在 "numbers" 中搜索数字 3

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

// 搜索数字 3
auto it = find(numbers.begin(), numbers.end(), 3);
自己尝试 »

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

示例

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

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> 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<int> numbers = {1, 7, 3, 5, 9, 2};

// 找到最小的数字
auto it = min_element(numbers.begin(), numbers.end());
自己尝试 »

要找到最大的元素,使用 max_element() 函数

示例

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

// 找到最大的数字
auto it = max_element(numbers.begin(), numbers.end());
自己尝试 »

修改算法

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

示例

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

// 创建一个名为 numbers 的向量,用于存储整数
vector<int> numbers = {1, 7, 3, 5, 9, 2};

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

// 将 numbers 中的元素复制到 copiedNumbers
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());
自己尝试 »

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

示例

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

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

// 用值 35 填充 numbers 向量中的所有元素
fill(numbers.begin(), numbers.end(), 35);
自己尝试 »

完整算法参考

有关算法函数的完整参考,请访问我们的 C++ 算法参考



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.