2013-04-26 55 views
7
std::vector<std::vector< std::pair<int, int> > > offset_table; 
    for (int i = 0; i < (offset.Width()*offset.Width()); ++i) 
    { 
    offset_table.push_back( std::vector< std::pair<int, int> > ); 
    } 

這是我的代碼,但我得到的錯誤:如何將一個空對矢量推回到另一個矢量?

main.cpp: In function ‘void Compress(const Image<Color>&, Image<bool>&, Image<Color>&, Image<Offset>&)’: 
main.cpp:48:66: error: expected primary-expression before ‘)’ token 

我不想在對任何價值,我只是想在此刻有空載體的載體。我將如何做到這一點?

回答

9

你想構建一個載體傳遞到的push_back和你只是缺少括號:

offset_table.push_back( std::vector< std::pair<int, int> >() ); 

或者,而不是你的循環,你可以只做到以下幾點。這是更好,因爲載體將在一個分配分配僅僅是內存適量:

offset_table.resize(offset.Width()*offset.Width(), std::vector< std::pair<int, int> >()); 

還是這個,因爲它使用的是更爲簡潔調整默認的第二個參數:

offset_table.resize(offset.Width()*offset.Width()); 
0
std::vector<std::vector< std::pair<int, int> > > offset_table; 

這是一個2D數組,所以你需要使用嵌套數組。只有獲得內部矢量的長度。

for(vector< pair<int, int >> vv in offset_table) 
{ 
    if(vv.size() == 0) 
    { 
     // this is your target. 
    } 
} 
+0

我想你已經誤解了這個問題。我認爲這個問題是你如何將一個空矢量push_back到矢量矢量中。 – Owl 2016-07-24 23:01:31