📅  最后修改于: 2023-12-03 15:29:50.088000             🧑  作者: Mango
C++ STL的algorithm库提供了很多非常有用的算法函数,其中swap_ranges()函数用于交换两个指定范围内的元素。它接受两对迭代器,第一对迭代器定义要交换的第一个范围,第二对迭代器定义要交换的第二个范围,然后将这两个范围中的元素交换。这个函数是一个通用算法,适用于不同的容器(如vector、list、deque等)。
template<class ForwardIt1, class ForwardIt2>
void swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2);
swap_ranges()函数没有返回值,它只是交换两个容器的指定范围内的元素。
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> foo {1, 2, 3, 4, 5};
std::vector<int> bar {10, 20, 30, 40, 50};
std::swap_ranges(foo.begin(), foo.begin()+3, bar.begin()+1);
for (int i: foo) {
std::cout << i << " ";
}
std::cout << "\n";
for (int i: bar) {
std::cout << i << " ";
}
std::cout << "\n";
return 0;
}
输出:
40 50 30 4 5
10 1 2 3 20
上面的示例将foo中的前三个元素(1、2和3)与bar中从第二个元素开始的三个元素(20、30和40)交换。输出的结果表明,foo中的元素已替换为bar中的对应元素,而bar中的元素已替换为foo中的对应元素。