2013-04-26 53 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