2010-12-30 40 views
6

Vektör < boost :: tuple < int, int, int >> gün gibi bir vektörü uygulamaya çalışıyorum; Bir koşulu kontrol etmek için tuple'ın ilk elemanını kullanmak istiyorum. Birisi bana nasıl yapılacağını söyler misiniz? İyileştirmek için yeniyim. Şimdiden teşekkürler.destek üyelerine erişme :: tuple

cevap

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

Bu make_tuple() kullanmazsam, get <>() – Shweta

+1

@Shweta: yes kullanabilirim, make_tuple' bir tuple oluşturmak için yalnızca yardımcı bir işlevdir. – Naveen

+0

yönteminiz bazı hatalar veriyor, sürüm sorunu veya başka bir şey olabilir. Hata hatadır: 'boost :: get <0>', 'boost :: tuples :: tuple ' – Shweta

5

İlk tupple'ın bir türü vardır:
(Düzenlemenizi düzeltti) Düzeltme Butonu nasıl daha iyi çalıştığını göstermek için burada kullanabilirsiniz.

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

// Load data into day; 

Şimdi, tupple'ın bu bölümlerini get yöntemini kullanarak çıkarabilirsiniz.

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

o <2> olsun, <1> olsun, <0> almak 'olmamalı'? – Naveen

+0

Geçersiz bir dizine eriştiğinizde oluşturulan hata iletisini gören oldu mu? Ayrıca, VS için bir görselleştiricinin olmaması beni uzaklaştırıyor. –