如何从2D向量中提取单行并分配给1D向量

How to extract a single row from a 2D vector and assign to a 1D vector?

本文关键字:向量 分配 1D 单行 2D 提取      更新时间:2023-10-16

考虑以下代码:

  vector < vector <double > > xor_input;
  xor_input.resize ( 6 );
  for (int i = 0; i < xor_input.size(); i++){
    xor_input[i].resize( 100 );
  }
  xor_input.resize( 6 );
  for(int i = 0; i < xor_input.size(); i++){
    xor_input[i].resize( 100 );
    for( int j = 0; j < xor_input[i].size(); j++){
      xor_input[i][j] = image_load[i][j];
    }
  }
  vector < double >  xor_output;
  xor_output.resize( 6 );  
  for(int i = 0; i < xor_output.size(); i++){
      xor_output[i] = xor_input[i];
    }

我正在加载6张图像到2D矢量(xor_input)。我需要存储从2D向量(xor_input)到1D向量(xor_output)的单行(这是一个图像)。

xor_output应该包含从xor_input 2D矢量加载的确切图像,以便进一步比较。

问题是xor_output是1D矢量,xor_input是2D矢量,我需要将xor_input的单行存储到xor_output中。

我得到以下错误:

error: cannot convert ‘__gnu_cxx::__alloc_traits<std::allocator<std::vector<double> > >::value_type {aka std::vector<double>}’ to ‘__gnu_cxx::__alloc_traits<std::allocator<double> >::value_type {aka double}’ in assignment
       xor_output[i] = xor_input[i];
                     ^
xor_output[i] = xor_input[i];

1) xor_output[i]是双精度类型。<——不是你想要的

2) xor_input[i]是一个双精度数组。

3) xor_output也是一个双精度数组<——这就是你想要的。

xor_output = xor_input[i];

将调用vector的操作符=将右操作数vector的值复制(而不是提取)到左操作数vector。

简而言之,您的左操作数是单个双精度对象,而不是您期望的vector对象。