2013-04-26 12 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> > ); 
    } 

To jest mój kod, ale otrzymuję błędy:Jak odepchnąć pusty wektor par do innego wektora?

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 

Nie chcę żadnych wartości w parach, po prostu chciałby mieć wektor pustych wektorów w tej chwili. Jak to zrobić?

Odpowiedz

9

Chcesz skonstruować wektor przejść do push_back i jesteś po prostu brakuje nawiasów:

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

Albo, zamiast swojego pętli, można po prostu wykonaj następujące czynności. To lepsze, ponieważ wektor przeznaczy tylko odpowiednią ilość pamięci w jednym alokacji:

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

albo to, co jest bardziej zwięzłe, ponieważ używa rozmiaru na domyślnych 2nd argument:

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

Jest to tablica 2d, więc musisz użyć tablicy zagnieżdżonej. Aby uzyskać tylko długość, jeśli wewnętrzny wektor.

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

Myślę, że źle zinterpretowałeś to pytanie. Myślę, że pytanie brzmiało: jak wcisnąć pusty wektor do wektora wektorów. – Owl