如何从2D矢量中提取单行并分配到1D矢量?

时间:2015-08-29 11:18:36

标签: c++ multidimensional-array

请考虑以下代码:

  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];
    }

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

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

问题是xor_output是一维向量而xor_input是一个2D向量,我需要将单行存储到xor_input的xor_ouput中。

我收到以下错误:

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];
                     ^

1 个答案:

答案 0 :(得分:0)

xor_output[i] = xor_input[i];

1)xor_output [i]是双倍的。 &lt; - 不是你想要的

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

3)xor_output也是一个双打数组&lt; - 这就是你想要的。

xor_output = xor_input[i];

调用vector的operator =将右操作数向量中的值复制而不是提取到左操作数向量。

简而言之,你的左手操作数是一个双倍而不是你期望的向量。