如何在二维向量中复制矢量

时间:2015-12-02 18:29:40

标签: c++ vector

我正在尝试在二维向量中复制一维向量的内容。

我尝试过使用push_back()

vector<int> v;
vector<vector<int> > twov;

for (int i = 0; i < v.size(); i++)
    twov.push_back(v[i])

但是,当然,我收到以下错误:

error: reference to type 'const value_type' (aka 'const std::__1::vector<int, std::__1::allocator<int> >') could not bind to an lvalue of type 'value_type'
  (aka 'int')

你能帮帮我吗?

提前致谢:)

1 个答案:

答案 0 :(得分:1)

您决定的第一件事是v的元素应该如何分配到twov

vN个元素。 N是否应该等于N1 x N2,其中N1是行数,N2是列数?

如果答案是肯定的,您可以创建twov {1}} 1-D N1来开始。

vectors

如果size_t N = v.size(); size_t N1 = <Some value>; size_t N2 = N/N1; assert(N1*N2 == N); // Create twov with the appropriate elements. vector<vector<int> > twov(N1, vector<int>(N2)); // Now copy the elements from v to twov for (size_t i = 0; i < N1; ++i ) { for (size_t j = 0; j < N2; ++j ) { twov[i][j] = v[i*N2+j]; } } 的结构不像上面那样干净,那么您必须提出一个不同的逻辑来将twov的元素复制到v。< / p>