2016-05-12 17 views
-1

Ich habe einen 2D Vektor vector<vector<int> > det; und ich möchte den letzten Wert oder den zuletzt push_back 'd Wert einem anderen 2D Vektor zuweisen v.
Das ist was ich versucht v = *(det.rbegin());, aber es zeigt einen Fehler. Was ist der richtige Weg?
Fehlermeldung: Konvertierung von 'std :: vector' auf nicht-skalare Typ 'std :: vector>' angefordertEinen Iterator auf einen 2D Vektor auflösen und seinen Wert einem anderen 2D Vektor zuweisen

+1

Betrachten Lesen der Fehlermeldung. – user2079303

+0

@ user2079303 Ich habe die Fehlermeldung schon gelesen, aber was bedeutet 'std :: vector>'? – user6291111

+0

Bitte geben Sie den gesamten Code an. –

Antwort

1

Der letzte Eintrag Ihrer 2D-Array ist nicht ein 2D-Array, dh vom Typ Vektor < Vektor < int>>, aber vom Typ Vektor < int>.

Als solche kann sie nicht auf eine andere Variable vom Typ zugeordnet werden

Vektor < Vektor < int>>

Dies funktioniert:

#include<iostream> 
#include<vector> 

int main(){ 
    std::vector<std::vector<int> > det, det2; 
    std::vector<int> vector1, vector2, vector3; 

    vector1.push_back(3); 
    vector1.push_back(4); 
    vector1.push_back(5); 

    vector2.push_back(13); 
    vector2.push_back(14); 
    vector2.push_back(15); 

    vector3.push_back(113); 
    vector3.push_back(114); 
    vector3.push_back(115); 

    std::vector<int> member_of_2darray; 

    det.push_back(vector1); 
    det.push_back(vector2); 
    det.push_back(vector3); 

    det2.push_back(det.back()); 

    std::cout<<det2[0][2]<<std::endl; // returns 115 

    //last:element 
    std::cout<<det.back().back()<<std::endl; 


} 

bearbeiten: Wenn Sie deperately Iteratoren verwenden möchten : Hier ist ein funktionierendes Beispiel:

#include<iostream> 
#include<vector> 

int main(){ 
    std::vector<std::vector<int> > det, det2; 
    std::vector<int> vector1, vector2, vector3; 

    std::vector<std::vector<int> >::iterator it; 

    vector1.push_back(3); 
    vector1.push_back(4); 
    vector1.push_back(5); 

    vector2.push_back(13); 
    vector2.push_back(14); 
    vector2.push_back(15); 

    vector3.push_back(113); 
    vector3.push_back(114); 
    vector3.push_back(115); 

    std::vector<int> member_of_2darray; 

    det.push_back(vector1); 
    det.push_back(vector2); 
    det.push_back(vector3); 

    it = det.end(); 

    det2.push_back(*(it-1)); 

    std::cout<<det2[0][2]<<std::endl; //output: 115 


} 
+0

Ich möchte den Wert des letzten Elements von det extrahieren, aber die Größe von det ist nicht bekannt. – user6291111

+0

das letzte Element von det.back(). Oder, mit einem Iterator ist das letzte Element * (it - 1). –

+0

Das Problem war mit dem Rückgabetyp von * (det.rbegin()), die Vektor ist, wie Sie in Ihrer Antwort erwähnt, aber die Beispiele sind in keiner Weise mit der Antwort verwandt. – user6291111

Verwandte Themen