在2D向量中移动行

时间:2019-11-02 13:37:26

标签: c++ c++11 visual-c++

我有一个如下所示的向量:

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

我该怎么做?

1 个答案:

答案 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的边界,中间参数告诉它新的第一个元素应该是什么。