2013-04-26 3 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> >()); 

Или это, что является более кратким, потому что он использует размер по умолчанию 2-й аргумент:

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

Смежные вопросы