2010-12-30 19 views
6

Ich versuche, einen Vektor wie Vektor zu implementieren < boost :: tuple < int, int, int >> Tag; Ich möchte auf das erste Element des Tupels zugreifen, um eine Bedingung zu überprüfen. kann mir bitte jemand sagen, wie es geht? Ich bin neu zu steigern. Vielen Dank im Voraus.Zugreifen auf Mitglieder von boost :: tuple

Antwort

15
#include <boost/tuple/tuple.hpp> 
#include <iostream> 
#include <vector> 

int main() 
{ 
    std::vector< boost::tuple<int, int, int> > v; 
    v.push_back(boost::make_tuple(1, 2, 3)); 
    std::cout << boost::get<0>(v[0]) << std::endl; 
    std::cout << boost::get<1>(v[0]) << std::endl; 
    std::cout << boost::get<2>(v[0]) << std::endl; 
} 
+0

Wenn ich dieses make_tuple() nicht verwende, kann ich get <>() verwenden – Shweta

+1

@Shweta: ja, 'make_tuple' ist nur eine Hilfsfunktion, um ein Tupel zu erzeugen. – Naveen

+0

Ihre Methode gibt einige Fehler, kann es Versionsproblem oder etwas anderes sein. Der Fehler ist ein Fehler: 'boost :: get <0>' ist kein Mitglied von 'boost :: tuples :: tuple > – Shweta

5

Zuerst Tupple hat eine Reihe von Typen:
Edit (Fixed your post) Aber mit abstrakten Typ hier zu demonstrieren, wie es besser funktioniert.

Jetzt können Sie die Teile des Tüpple mit der Get-Methode extrahieren.

A& aPart = day[0].get<0>(); 
B& bPart = day[0].get<1>(); 
C& cPart = day[0].get<2>(); 
+0

sollte es <0> nicht 'bekommen, <1> erhalten, erhalten <2>'? – Naveen

+0

Hat jemand die Fehlermeldung angezeigt, die beim Zugriff auf einen ungültigen Index generiert wird? Auch das Fehlen eines Visualizers für VS macht mich fertig. –

Verwandte Themen