2010-12-30 17 views
6

मैं वेक्टर < बूस्ट :: ट्यूपल < int, int, int >> दिन जैसे वेक्टर को कार्यान्वित करने की कोशिश कर रहा हूं; मैं एक शर्त की जांच करने के लिए ट्यूपल के पहले तत्व को स्वीकार करना चाहता हूं। क्या कोई मुझे बता सकता है कि यह कैसे करें? मैं बढ़ावा देने के लिए नया हूँ। अग्रिम धन्यवाद।बूस्ट के सदस्यों तक पहुंच :: tuple

उत्तर

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

यदि मैं इस make_tuple() का उपयोग नहीं करता, तो क्या मैं <>() – Shweta

+1

@Shweta प्राप्त करने में सक्षम हूं: हाँ, 'make_tuple' एक टुपल बनाने के लिए केवल एक सहायक कार्य है। – Naveen

+0

आपकी विधि कुछ त्रुटियां दे रही है, क्या यह संस्करण समस्या या कुछ और हो सकती है। त्रुटि त्रुटि है: 'boost :: <0>' प्राप्त करें 'boost :: tuples :: tuple ' – Shweta

5

पहले टुपल के प्रकारों का एक सेट है:
संपादित करें (अपनी पोस्ट को फिक्स्ड करें) लेकिन यह दिखाने के लिए यहां अमूर्त प्रकार का उपयोग करके यह बेहतर तरीके से काम करता है।

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

// Load data into day; 

अब आप प्राप्त विधि का उपयोग कर टुपल के उन हिस्सों को निकाल सकते हैं।

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

यह 'नहीं होना चाहिए <0> मिलता है, <1> मिलता है, <2> मिल'? – Naveen

+0

क्या किसी ने त्रुटि संदेश देखा है जो उत्पन्न होता है जब आप किसी अवैध अनुक्रमणिका तक पहुंचते हैं? इसके अलावा, वीएस के लिए एक विज़ुअलाइज़र की कमी मुझे बंद कर रही है। –

संबंधित मुद्दे