移动vector <vector <int>&gt;的最后一个元素开始

时间:2018-01-13 20:39:09

标签: c++ vector std

我需要将vector<vector<int>>的最后一个元素移到开头。我试过std::rotate,但它只适用于整数。我也试过std::move,但我失败了。我怎么能这样做?提前谢谢。

1 个答案:

答案 0 :(得分:2)

要将最后一个元素放在开头,您可以将std::rotate函数与reverse iterators一起使用。这将执行右旋转

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    std::rotate(v.rbegin(), v.rbegin() + 1, v.rend());
    for (auto el : v) {
        std::cout << el << ' ';
    }
}

要交换第一个和最后一个元素,请使用std::swap函数和向量的front()back()引用:

std::swap(v.front(), v.back());

std::rotate函数不依赖于类型。