2015-08-29 109 views
-2

考慮下面的代碼:如何從2D矢量提取單個行並將其分配給1D矢量?

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)存儲一行(這是一個圖像)到一維向量(xor_output)。

xor_output應該包含從xor_input 2D矢量加載的確切圖像以供進一步比較。

問題是xor_output是一維向量,xor_input是二維向量,我需要將單行存儲到xor_output的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

標題的答案是'xor_output = xor_input [index];',但描述不清楚。 – LogicStuff

+1

您的600個雙值輸入中的哪一個應該是輸出的6個雙精度值?每個矢量中的第一個?第二? 'k'th ...'xor_output [i] = xor_input [i] [k];' –

回答

0
xor_output[i] = xor_input[i]; 

1)xor_output [i]是一個雙。 < - 沒有你想要的

2)xor_input [i]是一個雙精度數組。

3)xor_output是,也是一個雙打數組< - 這是你想要的。

xor_output = xor_input[i]; 

能打電話通知向量的運算符=從右側操作數向量複製,不能提取,值左邊的操作數向量。

總之,您的左手操作數是一個單一的雙重而不是您的預期向量。