跳到主要内容
注意

请注意,本文尚未完成!您可以通过编辑此文档页面来提供帮助。

使用算法

在 C++ 标准库中,我们发现了很多现成的算法,可以用来操作向量。

C++ 版本

我们建议您使用 C++ 20 版本,因为解决方案更简单。对于由于某些原因无法安装支持最新标准的编译器的人,我们还将提供适用于旧版本的示例。

为了能够使用算法,我们需要在代码中添加以下头文件

#include <algorithm>

动机

  1. 搜索最小值 ( std::ranges::min())
  2. 搜索最大值 ( std::ranges::max())
  3. 计算给定元素出现的次数 ( std::ranges::count())
  4. 反转顺序 ( std::ranges::reverse())
  5. 排序向量元素 ( std::ranges::sort())

算法

首先,让我们创建一个简单的程序,在此程序上测试算法的操作。让我们准备一个数字数组

数字数组
std::vector<int> numbers = { 22, 13, 27, 4 };

在任何情况下,使用算法都将归结为输入

std::ranges::<algorithm_name>( <vector_name> );

// for example:
std::ranges::sort(numbers);

其中,我们用上面准备好的 numbers 替换 <vector_name>。我们将在每次操作后使用我们之前学过的 for 循环显示其内容

显示数组中的每个数字
for (int n : numbers)
std::cout << n << ' ';

演示

首先,让我们看看一个使用所有这些算法的示例代码,然后我们再讨论它们。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
std::vector<int> numbers = { 22, 13, 27, 4 };

int min = std::ranges::min(numbers);
int max = std::ranges::max(numbers);

std::cout << "The smallest: " << min << '\n';
std::cout << "The greatest: " << max << '\n';

// For the sake of demonstration of the "count"
// function I add a single 13 number to the end:
numbers.push_back(13);

size_t count = std::ranges::count(numbers, 13);
std::cout << "Occurrences of 13: " << count << '\n';

std::cout << "Before reversing:\n";
for (int n : numbers)
std::cout << n << ' ';

std::ranges::reverse(numbers);

std::cout << "\nAfter reversing:\n";
for (int n : numbers)
std::cout << n << ' ';

std::cout << "\nBefore sorting:\n";
for (int n : numbers)
std::cout << n << ' ';

std::ranges::sort(numbers);

std::cout << "\nAfter sorting:\n";
for (int n : numbers)
std::cout << n << ' ';
}
结果
The smallest: 4
The greatest: 27
Occurrences of 13: 2
Before reversing:
22 13 27 4 13
After reversing:
13 4 27 13 22
Before sorting:
13 4 27 13 22
After sorting:
4 13 13 22 27

解释

最小值

Overview of the 'min' algorithm

要查找向量中的最小值,我们使用std::ranges::min


std::cout << std::ranges::min(numbers);

最大值

Overview of the 'max' algorithm

要查找向量中的最大值,我们这样使用std::ranges::max


std::cout << std::ranges::max(numbers);

计数出现次数

注意

为了这个算法的目的,我们将在数组的末尾添加一个值 13

Overview of the 'count' algorithm

count 用于计算元素的出现次数,在这种情况下,是在向量内部。我们这样使用它

我们也可以将此结果写入变量。我们应该为此使用特殊类型 size_t,它只是一个非负数(因为出现次数不能是负数)


size_t count = std::ranges::count(numbers, 13);
std::cout << "Occurrences of 13: " << count;

反转顺序

Overview of the 'reverse' algorithm

要反转向量元素的顺序,我们使用std::ranges::reverse  (在 C++20 之前使用std::reverse


std::ranges::reverse(numbers);

排序

Działanie algorytmu 'sort'

我们这样使用sort函数


std::ranges::sort(numbers);
注意

请注意,本文尚未完成!您可以通过编辑此文档页面来提供帮助。

使用算法

在 C++ 标准库中,我们发现了很多现成的算法,可以用来操作向量。

C++ 版本

我们建议您使用 C++ 20 版本,因为解决方案更简单。对于由于某些原因无法安装支持最新标准的编译器的人,我们还将提供适用于旧版本的示例。

为了能够使用算法,我们需要在代码中添加以下头文件

#include <algorithm>

动机

  1. 搜索最小值 ( std::ranges::min())
  2. 搜索最大值 ( std::ranges::max())
  3. 计算给定元素出现的次数 ( std::ranges::count())
  4. 反转顺序 ( std::ranges::reverse())
  5. 排序向量元素 ( std::ranges::sort())

算法

首先,让我们创建一个简单的程序,在此程序上测试算法的操作。让我们准备一个数字数组

数字数组
std::vector<int> numbers = { 22, 13, 27, 4 };

在任何情况下,使用算法都将归结为输入

std::ranges::<algorithm_name>( <vector_name> );

// for example:
std::ranges::sort(numbers);

其中,我们用上面准备好的 numbers 替换 <vector_name>。我们将在每次操作后使用我们之前学过的 for 循环显示其内容

显示数组中的每个数字
for (int n : numbers)
std::cout << n << ' ';

演示

首先,让我们看看一个使用所有这些算法的示例代码,然后我们再讨论它们。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
std::vector<int> numbers = { 22, 13, 27, 4 };

int min = std::ranges::min(numbers);
int max = std::ranges::max(numbers);

std::cout << "The smallest: " << min << '\n';
std::cout << "The greatest: " << max << '\n';

// For the sake of demonstration of the "count"
// function I add a single 13 number to the end:
numbers.push_back(13);

size_t count = std::ranges::count(numbers, 13);
std::cout << "Occurrences of 13: " << count << '\n';

std::cout << "Before reversing:\n";
for (int n : numbers)
std::cout << n << ' ';

std::ranges::reverse(numbers);

std::cout << "\nAfter reversing:\n";
for (int n : numbers)
std::cout << n << ' ';

std::cout << "\nBefore sorting:\n";
for (int n : numbers)
std::cout << n << ' ';

std::ranges::sort(numbers);

std::cout << "\nAfter sorting:\n";
for (int n : numbers)
std::cout << n << ' ';
}
结果
The smallest: 4
The greatest: 27
Occurrences of 13: 2
Before reversing:
22 13 27 4 13
After reversing:
13 4 27 13 22
Before sorting:
13 4 27 13 22
After sorting:
4 13 13 22 27

解释

最小值

Overview of the 'min' algorithm

要查找向量中的最小值,我们使用std::ranges::min


std::cout << std::ranges::min(numbers);

最大值

Overview of the 'max' algorithm

要查找向量中的最大值,我们这样使用std::ranges::max


std::cout << std::ranges::max(numbers);

计数出现次数

注意

为了这个算法的目的,我们将在数组的末尾添加一个值 13

Overview of the 'count' algorithm

count 用于计算元素的出现次数,在这种情况下,是在向量内部。我们这样使用它

我们也可以将此结果写入变量。我们应该为此使用特殊类型 size_t,它只是一个非负数(因为出现次数不能是负数)


size_t count = std::ranges::count(numbers, 13);
std::cout << "Occurrences of 13: " << count;

反转顺序

Overview of the 'reverse' algorithm

要反转向量元素的顺序,我们使用std::ranges::reverse  (在 C++20 之前使用std::reverse


std::ranges::reverse(numbers);

排序

Działanie algorytmu 'sort'

我们这样使用sort函数


std::ranges::sort(numbers);