我正在尝试在二维向量中复制一维向量的内容。
我尝试过使用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')
你能帮帮我吗?
提前致谢:)
答案 0 :(得分:1)
您决定的第一件事是v
的元素应该如何分配到twov
。
说v
有N
个元素。 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>