2010-12-30 21 views
6

Sto cercando di implementare un vettore come vettore < boost :: tuple < int, int, int >> giorno; Voglio accettare il primo elemento di tuple per verificare una condizione. qualcuno può, per favore, dirmi come si fa? Sono nuovo per aumentare. Grazie in anticipo.accesso ai membri di boost :: tupla

risposta

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

se non uso questo make_tuple(), sarò in grado di usare get <>() – Shweta

+1

@Shweta: sì, 'make_tuple' è solo una funzione di supporto per creare una tupla. – Naveen

+0

il tuo metodo sta dando alcuni errori, può essere un problema di versione o qualcos'altro. L'errore è errore: 'boost :: get <0>' non è un membro di 'boost :: tuples :: tuple ' – Shweta

5

Primo tupple ha un set di tipi:
Modifica (corretto il post) Ma utilizzando il tipo astratto qui per dimostrare come funziona meglio.

std::vector<boost::tuple<A, B, C> > day; 

// Load data into day; 

Ora si può estrarre che le parti del tupple utilizzando il metodo get.

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

non dovrebbe essere 'ottenere <0>, ottenere <1>, ottenere <2>'? – Naveen

+0

Qualcuno ha visto il messaggio di errore che viene generato quando si accede a un indice non valido? Inoltre, la mancanza di un visualizzatore per VS mi sta scoraggiando. –

Problemi correlati