考虑以下代码:
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对象。