-
std::copy
作用:复制一个范围内的元素到另一个范围。
返回值:返回目标范围最后一个元素之后的迭代器。
使用示例:std::copy(src.begin(), src.end(), dest.begin());
-
std::copy_n
作用:复制指定数量的元素到目标范围。
返回值:返回目标范围最后一个元素之后的迭代器。
使用示例:std::copy_n(src.begin(), 3, dest.begin());
-
std::move
作用:移动一个范围内的元素到另一个范围。
返回值:返回目标范围最后一个元素之后的迭代器。
使用示例:std::move(src.begin(), src.end(), dest.begin());
-
std::fill
作用:用指定的值填充范围。
返回值:无。
使用示例:std::fill(vec.begin(), vec.end(), 10);
-
std::fill_n
作用:用指定的值填充指定数量的元素。
返回值:返回最后一个填充元素之后的迭代器。
使用示例:std::fill_n(vec.begin(), 3, 20);
-
std::for_each
作用:对范围内的每个元素应用指定的操作。
返回值:返回传入的函数对象。
使用示例:std::for_each(vec.begin(), vec.end(), [](int n) { ... });
-
std::reverse
作用:反转范围内元素的顺序。
返回值:无。
使用示例:std::reverse(vec.begin(), vec.end());
-
std::sort
作用:对范围内的元素进行排序。
返回值:无。
使用示例:std::sort(vec.begin(), vec.end());
-
std::find
作用:查找范围内第一个匹配指定值的元素。
返回值:返回找到的元素的迭代器。
使用示例:auto it = std::find(vec.begin(), vec.end(), 3);
-
std::count
作用:统计范围内匹配指定值的元素数量。
返回值:返回匹配元素的数量。
使用示例:int count = std::count(vec.begin(), vec.end(), 2);
-
std::unique
作用:删除范围内相邻的重复元素。
返回值:返回唯一元素序列末尾的迭代器。
使用示例:auto it = std::unique(vec.begin(), vec.end());
-
std::accumulate
作用:计算范围内元素的累加和,使用指定的初始值。
返回值:返回累加结果。
使用示例:int sum = std::accumulate(vec.begin(), vec.end(), 0);
-
std::min_element
作用:查找范围内最小元素的迭代器。
返回值:返回指向最小元素的迭代器。
使用示例:auto it = std::min_element(vec.begin(), vec.end());
-
std::max_element
作用:查找范围内最大元素的迭代器。
返回值:返回指向最大元素的迭代器。
使用示例:auto it = std::max_element(vec.begin(), vec.end());
1. std::copy
std::copy
用于将一个范围内的元素复制到另一个范围。
函数原型:
template <class InputIt, class OutputIt>
OutputIt copy(InputIt first, InputIt last, OutputIt d_first);
参数说明:
first
:要复制的元素范围的起始迭代器。last
:要复制的元素范围的结束迭代器(不包括该位置的元素)。d_first
:目标范围的起始迭代器。
返回值:
返回目标范围内最后一个元素之后的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dest(5); // 确保目标容器有足够的空间
std::copy(src.begin(), src.end(), dest.begin());
for (int n : dest) {
std::cout << n << " ";
}
return 0;
}
输出:1 2 3 4 5
2. std::copy_n
std::copy_n
用于从给定范围开始的前 n
个元素复制到另一个范围。
函数原型:
template <class InputIt, class Size, class OutputIt>
OutputIt copy_n(InputIt first, Size n, OutputIt result);
参数说明:
first
:要复制的元素范围的起始迭代器。n
:要复制的元素数量。result
:目标范围的起始迭代器。
返回值:
返回目标范围内最后一个元素之后的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dest(3); // 只复制 3 个元素
std::copy_n(src.begin(), 3, dest.begin());
for (int n : dest) {
std::cout << n << " ";
}
return 0;
}
输出:1 2 3
3. std::move
std::move
用于将一个范围的元素移动到另一个范围,而不是复制。它会使用移动语义,可以避免不必要的拷贝,适合移动非拷贝的资源如智能指针。
函数原型:
template <class InputIt, class OutputIt>
OutputIt move(InputIt first, InputIt last, OutputIt d_first);
参数说明:
first
:要移动的元素范围的起始迭代器。last
:要移动的元素范围的结束迭代器。d_first
:目标范围的起始迭代器。
返回值:
返回目标范围内最后一个元素之后的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::string> src = {"one", "two", "three"};
std::vector<std::string> dest(3);
std::move(src.begin(), src.end(), dest.begin());
for (const auto& str : dest) {
std::cout << str << " ";
}
return 0;
}
输出:one two three
4. std::fill
std::fill
用于用指定的值填充一个范围的所有元素。
函数原型:
template <class ForwardIt, class T>
void fill(ForwardIt first, ForwardIt last, const T& value);
参数说明:
first
:要填充的范围的起始迭代器。last
:要填充的范围的结束迭代器。value
:用来填充的值。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec(5);
std::fill(vec.begin(), vec.end(), 10);
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
输出:10 10 10 10 10
5. std::fill_n
std::fill_n
用于从指定起始位置开始填充 n
个元素。
函数原型:
template <class OutputIt, class Size, class T>
OutputIt fill_n(OutputIt first, Size n, const T& value);
参数说明:
first
:要填充的范围的起始迭代器。n
:要填充的元素数量。value
:用来填充的值。
返回值:
返回最后一个填充元素之后的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec(5);
std::fill_n(vec.begin(), 3, 20); // 只填充 3 个元素
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
输出:20,20,20,0,0
6. std::transform
std::transform
用于通过给定的函数对输入范围的每个元素进行变换,并将结果存储到另一个范围。
函数原型:
template <class InputIt, class OutputIt, class UnaryOperation>
OutputIt transform(InputIt first, InputIt last, OutputIt d_first, UnaryOperation unary_op);
参数说明:
first
:要变换的范围的起始迭代器。last
:要变换的范围的结束迭代器。d_first
:目标范围的起始迭代器。unary_op
:用于对元素进行变换的函数对象或 lambda 表达式。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int> result(5);
std::transform(vec.begin(), vec.end(), result.begin(), [](int x) { return x * 2; });
for (int n : result) {
std::cout << n << " ";
}
return 0;
}
输出:2,4,6,8,10
7. std::for_each
std::for_each
用于对指定范围内的每个元素应用给定的操作。
函数原型:
template <class InputIt, class Function>
Function for_each(InputIt first, InputIt last, Function f);
参数说明:
first
:要操作的范围的起始迭代器。last
:要操作的范围的结束迭代器。f
:用于处理每个元素的函数或函数对象。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::for_each(vec.begin(), vec.end(), [](int n) { std::cout << n << " "; });
return 0;
}
输出:1,2,3,4,5
8. std::reverse
std::reverse
用于反转指定范围内的元素顺序。
函数原型:
template <class BidirIt>
void reverse(BidirIt first, BidirIt last);
参数说明:
first
:要反转的范围的起始迭代器。last
:要反转的范围的结束迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::reverse(vec.begin(), vec.end());
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
输出:5,4,3,2,1
9. std::sort
std::sort
用于对指定范围内的元素进行排序。
函数原型:
template <class RandomIt>
void sort(RandomIt first, RandomIt last);
参数说明:
first
:要排序的范围的起始迭代器。last
:要排序的范围的结束迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 3, 2, 4, 1};
std::sort(vec.begin(), vec.end());
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
输出:1,2,3,4,5
10. std::find
std::find
用于在指定范围内查找第一个与给定值匹配的元素。
函数原型:
template <class InputIt, class T>
InputIt find(InputIt first, InputIt last, const T& value);
参数说明:
first
:要搜索的范围的起始迭代器。last
:要搜索的范围的结束迭代器。value
:要查找的值。
返回值:
返回找到的元素的迭代器,如果未找到,则返回 last
。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
std::cout << "Found: " << *it << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
输出:Found : 3
11. std::count
std::count
用于计算指定范围内与给定值匹配的元素数量。
函数原型:
template <class InputIt, class T>
typename std::iterator_traits<InputIt>::difference_type
count(InputIt first, InputIt last, const T& value);
参数说明:
first
:要搜索的范围的起始迭代器。last
:要搜索的范围的结束迭代器。value
:要计数的值。
返回值:
返回与 value
匹配的元素数量。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 2, 5};
int count = std::count(vec.begin(), vec.end(), 2);
std::cout << "Count of 2: " << count << std::endl;
return 0;
}
输出:Count of 2: 2
12. std::unique
std::unique
用于移除相邻重复的元素,使得每个元素唯一。
函数原型:
template <class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
参数说明:
first
:要处理的范围的起始迭代器。last
:要处理的范围的结束迭代器。
返回值:
返回指向唯一元素序列末尾的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 1, 2, 2, 3, 3, 4};
auto it = std::unique(vec.begin(), vec.end());
vec.erase(it, vec.end()); // 移除多余的元素
for (int n : vec) {
std::cout << n << " ";
}
return 0;
}
输出:1 2 3 4
13. std::accumulate
std::accumulate
用于计算范围内元素的累加。
函数原型:
template <class InputIt, class T>
T accumulate(InputIt first, InputIt last, T init);
参数说明:
first
:要处理的范围的起始迭代器。last
:要处理的范围的结束迭代器。init
:初始值。
返回值:
返回累加结果。
使用示例:
#include <iostream>
#include <vector>
#include <numeric>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int sum = std::accumulate(vec.begin(), vec.end(), 0);
std::cout << "Sum: " << sum << std::endl;
return 0;
}
输出:Sum:15
14. std::min_element
std::min_element
用于找到范围内最小元素的迭代器。
函数原型:
template <class ForwardIt>
ForwardIt min_element(ForwardIt first, ForwardIt last);
参数说明:
first
:要搜索的范围的起始迭代器。last
:要搜索的范围的结束迭代器。
返回值:
返回指向最小元素的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 3, 1, 4, 2};
auto it = std::min_element(vec.begin(), vec.end());
std::cout << "Min element: " << *it << std::endl;
return 0;
}
输出:Min element: 1
15. std::max_element
std::max_element
用于找到范围内最大元素的迭代器。
函数原型:
template <class ForwardIt>
ForwardIt max_element(ForwardIt first, ForwardIt last);
参数说明:
first
:要搜索的范围的起始迭代器。last
:要搜索的范围的结束迭代器。
返回值:
返回指向最大元素的迭代器。
使用示例:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 3, 1, 4, 2};
auto it = std::max_element(vec.begin(), vec.end());
std::cout << "Max element: " << *it << std::endl;
return 0;
}
输出:Max element: 5