📅  最后修改于: 2023-12-03 15:22:39.027000             🧑  作者: Mango
STL中为我们提供了一系列的反向函数,这些函数可以帮助我们实现一些方便的操作。下面是一些常用的反向函数:
std::reverse
函数可以将一个序列逆序排列,头尾元素交换位置。该函数的用法如下:
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v{1, 2, 3, 4, 5};
std::reverse(v.begin(), v.end());
// v变为{5, 4, 3, 2, 1}
}
std::reverse_copy
函数可以将一个序列逆序拷贝到另一个容器中。该函数的用法如下:
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v1{1, 2, 3, 4, 5};
std::vector<int> v2(v1.size());
std::reverse_copy(v1.begin(), v1.end(), v2.begin());
// v1为{1, 2, 3, 4, 5},v2变为{5, 4, 3, 2, 1}
}
std::next_permutation
函数可以将一个序列变成下一个排列,如果不存在下一个排列则返回false
。该函数的用法如下:
#include <algorithm>
#include <vector>
#include <iostream>
int main()
{
std::vector<int> v{1, 2, 3};
do {
for (auto i : v) {
std::cout << i << " ";
}
std::cout << '\n';
} while (std::next_permutation(v.begin(), v.end()));
// 输出:1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
}
std::prev_permutation
函数可以将一个序列变成前一个排列,如果不存在前一个排列则返回false
。该函数的用法如下:
#include <algorithm>
#include <vector>
#include <iostream>
int main()
{
std::vector<int> v{3, 2, 1};
do {
for (auto i : v) {
std::cout << i << " ";
}
std::cout << '\n';
} while (std::prev_permutation(v.begin(), v.end()));
// 输出:3 2 1 3 1 2 2 3 1 2 1 3 1 3 2
}
以上是STL中常用的反向函数,可以很大程度地简化我们的操作。