2010-12-30 13 views
6

Estoy tratando de implementar un vector como vector < boost :: tuple < int, int, int >> día; Quiero acceder al primer elemento de tupla para verificar una condición. alguien puede decirme cómo hacerlo? Soy nuevo para impulsar. Gracias de antemano.accediendo a miembros de boost :: tuple

Respuesta

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

si no uso este make_tuple(), podré usar get <>() – Shweta

+1

@Shweta: sí, 'make_tuple' es solo una función auxiliar para crear una tupla. – Naveen

+0

su método está dando algunos errores, puede ser un problema de versión u otra cosa. El error es un error: 'boost :: get <0>' no es miembro de 'boost :: tuples :: tuple ' – Shweta

5

First tupple tiene un conjunto de tipos:
Editar (Corregido su publicación) Pero usando el tipo abstracto para demostrar cómo funciona mejor.

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

// Load data into day; 

Ahora puede extraer esas partes del tupple usando el método get.

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

¿no debería ser 'get <0>, obtener <1>, obtener <2>'? – Naveen

+0

¿Alguien ha visto el mensaje de error que se genera cuando accede a un índice no válido? Además, la falta de un visualizador para VS me está desanimando. –