c++ - 如何在二维 vector 中复制一个 vector

标签 c++ vector

我正在尝试将一维 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

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

如果答案是肯定的,您可以创建包含 N1 一维 vectorstwov

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/

相关文章:

c++ - 如何修复加载 DLL

用模式替换 R 中的字符串并替换两个向量

c++ - 如何从两个数组中生成一对 vector ,然后使用 CUDA/Thrust 按该对的第一个元素排序?

c++ - QTcpSocket 两种客户端-服务器通信方式

如果未定义最小值,则 C++ 字符串不能接受新字符

c++ - 关于c++中 vector push_back()的问题,我不知道如何在()里面填充

c++ - 带有特定分配器的 std::uninitialized_move

java - 在 Java 中取 vector 的随机百分比

c++ - 使用 dgemm/dgemv 的矩阵 vector 积

java - Row 不会使用 vector 添加到我的 JTable 的末尾