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

Dies ist mein Code, aber ich bin die Fehler bekommen:Wie würde man einen leeren Vektor von Paaren zu einem anderen Vektor zurückschieben?

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 

ich in den Paaren alle Werte nicht wollen, ich im Moment einen Vektor der leeren Vektoren haben möchten einfach mal. Wie würde ich das tun?

Antwort

9

Sie wollen einen Vektor konstruieren, um push_back zu passieren und du bist gerade Klammern fehlt:

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

Oder statt der Schleife, könnten Sie die folgende gerade tun. Es ist besser, weil der Vektor genau die richtige Menge an Speichern in einer einzigen Zuordnung zuteilen wird:

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

Oder diese, die prägnanter ist, weil es mit der Größe des zweite Argument default:

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

Dies ist ein 2D-Array, also müssen Sie geschachtelte Arrays verwenden. Um nur die Länge des inneren Vektors zu erhalten.

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

Ich denke, Sie haben die Frage missverstanden. Ich denke, die Frage war, wie drückt man einen leeren Vektor auf einen Vektor von Vektoren zurück. – Owl

Verwandte Themen