须知:使用前提,#include<algorithm>
排序算法
要对数据结构中的元素进行排序,可以使用该函数。sort()
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 创建一个存储整数的 vector,名为 numbers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 对 numbers 进行数字排序
sort(numbers.begin(), numbers.end());
// 输出排序后的 numbers
for (int num : numbers) {
cout << num << "\n";
}
return 0;
}
运行结果:
如果想逆序排序的话可以:sort(numbers.rbegin(), numbers.rend());其余内容同上,有关rbegin(),和rend()可以参考rbegin和rend
搜索算法
要在 vector
中查找特定元素,你可以使用 find()
函数。
它接收三个参数:开始迭代器、结束迭代器和要查找的值。也就是说,find()
会在给定范围内查找是否存在你指定的值。
通俗一点说:
- 开始迭代器:这是查找从哪一部分开始(通常是
vector
的开头)。 - 结束迭代器:这是查找到哪里为止(通常是
vector
的末尾)。 - 要查找的值:就是你想找到的那个具体数字或元素。
如果找到,find()
会返回指向该元素的迭代器;如果没找到,它会返回一个指向结束位置的迭代器(表示查找失败)。
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// Create a vector called numbers that will store integers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// Search for the number 3
auto it = find(numbers.begin(), numbers.end(), 3);
// Check if the number 3 was found
if (it != numbers.end()) {
cout << "The number 3 was found!" << "\n";
} else {
cout << "The number 3 was not found." << "\n";
}
return 0;
}
运行结果:
特定值搜索
要搜索大于特定值的第一个元素,您可以使用以下函数:upper_bound()
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 创建一个存储整数的 vector,名为 numbers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 对 vector 进行升序排序
sort(numbers.begin(), numbers.end());
// 在排序后的 vector 中查找第一个大于 5 的值
auto it = upper_bound(numbers.begin(), numbers.end(), 5);
cout << *it;
return 0;
}
运行结果:
查找向量中的最小元素
使用函数min_element()
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 创建一个存储整数的 vector,名为 numbers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 查找最小的数字
auto it = min_element(numbers.begin(), numbers.end());
cout << *it;
return 0;
}
运行结果:
查找最大的元素
用max_element(),代码类似上面,把函数名改为max_element()
修改算法
复制转移
要将元素从一个 vector 复制到另一个 vector,可以使用以下函数copy()
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 创建一个存储整数的 vector,名为 numbers
vector<int> numbers = {1, 7, 3, 5, 9, 2};
// 创建一个名为 copiedNumbers 的 vector,大小为 6,用于存储整数
vector<int> copiedNumbers(6);
// 将 numbers 中的元素复制到 copiedNumbers 中
copy(numbers.begin(), numbers.end(), copiedNumbers.begin());
// 输出 copiedNumbers 中的元素
for (int num : copiedNumbers) {
cout << num << "\n";
}
return 0;
}
运行结果:
值填充 vector 中的所有元素
使用以下函数:fill()
eg:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// 创建一个大小为 6 的 vector,名为 numbers,用于存储整数
vector<int> numbers(6);
// 将 numbers 向量中的所有元素填充为 35
fill(numbers.begin(), numbers.end(), 35);
// 输出 vector 中的所有元素
for (int num : numbers) {
cout << num << "\n";
}
return 0;
}
运行结果: