mirror of http://git.sairate.top/sairate/doc.git
2.3 KiB
2.3 KiB
- 查找和比较:
find
:在范围内查找元素。find_if
:在范围内查找满足指定条件的元素。count
:统计范围内满足条件的元素个数。count_if
:统计范围内满足指定条件的元素个数。equal
:比较两个范围是否相等。lexicographical_compare
:按字典序比较两个范围。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3, 4, 5};
// 查找元素
auto it = find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
cout << "Element found: " << *it << endl;
}
// 查找满足条件的元素
auto it2 = find_if(vec.begin(), vec.end(), [](int x) { return x > 3; });
if (it2 != vec.end()) {
cout << "Element > 3 found: " << *it2 << endl;
}
// 统计元素个数
int num = count(vec.begin(), vec.end(), 2);
cout << "Number of 2s: " << num << endl;
// 比较两个范围
vector<int> vec2 = {1, 2, 3};
bool result = equal(vec.begin(), vec.end(), vec2.begin(), vec2.end());
if (result) {
cout << "Vectors are equal" << endl;
} else {
cout << "Vectors are not equal" << endl;
}
return 0;
}
- 排序和操作:
sort
:对范围内的元素进行排序。reverse
:反转范围内的元素顺序。copy
:将范围内的元素复制到另一个位置。remove
:移除范围内满足条件的元素(不会改变容器大小)。remove_if
:移除范围内满足指定条件的元素(不会改变容器大小)。transform
:对范围内的元素执行指定操作。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {5, 3, 1, 4, 2};
// 排序
sort(vec.begin(), vec.end());
// 反转元素顺序
reverse(vec.begin(), vec.end());
// 复制元素到另一个位置
vector<int> vec2(5);
copy(vec.begin(), vec.end(), vec2.begin());
// 移除元素
vec.erase(remove(vec.begin(), vec.end(), 3), vec.end());
// 对元素执行操作
transform(vec.begin(), vec.end(), vec.begin(), [](int x) { return x * 2; });
// 输出元素
for (auto& num : vec) {
cout << num << " ";
}
cout << endl;
return 0;
}