我需要将vector<vector<int>>
的最后一个元素移到开头。我试过std::rotate
,但它只适用于整数。我也试过std::move
,但我失败了。我怎么能这样做?提前谢谢。
答案 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
函数不依赖于类型。