c++ - 将 vector<vector<int>> 的最后一个元素移动到开头

标签 c++ vector std

我需要移动 vector<vector<int>> 的最后一个元素到开始。我试过 std::rotate ,但它仅适用于整数。我也试过std::move但我失败了。我该怎么做?提前谢谢你。

最佳答案

要将最后一个元素放在开头,您可以使用 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 vector 的函数 front()back()引用资料:

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

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

关于c++ - 将 vector<vector<int>> 的最后一个元素移动到开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244095/

相关文章:

c++ - 正在打印空指针未定义行为吗?

c++ - 如何不删除迭代器(从 "Effective STL"开始)

c++ - 将在调整 vector 大小时调用对象的复制构造函数

c++ - C++ 中的正则表达式如何搜索有效的 Linux 设备节点?

c++ - 我可以在不知道类型参数的情况下持有 shared_ptr 吗?

c++ - 在没有参数列表的情况下无效使用模板名称 'SmartArray'

c++ - cl::vector 与 std::vector:不同的迭代器行为

android - eclipse 中没有 std::find() 的匹配函数。在 XCode 中运行良好

c++ - 唯一形式算法和列表容器的唯一有什么区别?

c++ - 防止更改继承的 protected 成员的访问级别