我正在尝试将一维 vector 的内容复制到二维 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')
你能帮帮我吗?
提前致谢:)
最佳答案
您首先要决定的是如何将 v
的元素分配给 twov
。
假设 v
有 N
个元素。 N
是否应等于 N1 x N2
,其中 N1
是行数,N2
是行数列数?
如果答案是肯定的,您可以创建包含 N1
一维 vectors
的 twov
。
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
的元素复制到 twov
.
关于c++ - 如何在二维 vector 中复制一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050320/