菜单
×
   ❮     
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++ OOP C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构与 STL C++ Vectors C++ List C++ Stacks C++ Queues C++ Deque C++ Sets C++ Maps C++ 迭代器 C++ 算法

C++ How To

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++ 算法

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

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

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

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

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

排序算法

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

sort() 函数接受 迭代器(通常是 begin() 返回的开始迭代器end() 返回的结束迭代器)作为参数

示例

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

// 按字母顺序对汽车进行排序
sort(cars.begin(), cars.end());
自己动手试一试 »

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

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

示例

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

// 按数值顺序对数字进行排序
sort(numbers.begin(), numbers.end());
自己动手试一试 »

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

示例

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

// 按数值顺序反向排序数字
sort(numbers.rbegin(), numbers.rend());
自己动手试一试 »

要仅对特定元素进行排序,可以这样做:

示例

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

// 按数值顺序对数字进行排序,从第四个元素开始(仅排序 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);

// 将 elements 从 numbers 复制到 copiedNumbers
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());
自己动手试一试 »

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

示例

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

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

// 将 numbers 向量中的所有元素填充为值 35
fill(numbers.begin(), numbers.end(), 35);
自己动手试一试 »

完整的算法参考

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



×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持