📜  列出C++ STL中的反向函数(1)

📅  最后修改于: 2023-12-03 15:22:39.027000             🧑  作者: Mango

C++ STL中的反向函数

STL中为我们提供了一系列的反向函数,这些函数可以帮助我们实现一些方便的操作。下面是一些常用的反向函数:

1. reverse

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}
}
2. reverse_copy

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}
}
3. next_permutation

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
}
4. prev_permutation

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中常用的反向函数,可以很大程度地简化我们的操作。