我有一个如下所示的向量:
vector<vector<double>> A;
并具有这样的值:
1,2,3
3,4,5
5,6,7
8,9,6
我想在第3步中向下移动行,然后变成下面的行:
3,4,5
5,6,7
8,9,6
1,2,3
我该怎么做?
答案 0 :(得分:1)
std::rotate应该可以解决问题:
#include <algorithm> // std::rotate
#include <iterator> // std::next
std::rotate(A.begin(), std::next(A.begin()), A.end());
A.begin()
-返回指向第一个元素的迭代器-如果为空向量,则返回end()
。
std::next(A.begin())
-返回指向向量中第二个元素的迭代器。
A.end()
-返回指向向量中最后一个元素之外一步的迭代器。
第一个和最后一个参数(A.begin()
和A.end()
)设置std::rotate
的边界,中间参数告诉它新的第一个元素应该是什么。