请考虑以下代码:
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];
^
答案 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 =将右操作数向量中的值复制而不是提取到左操作数向量。
简而言之,你的左手操作数是一个双倍而不是你期望的向量。