boost::tuple documentation के अनुसार, एक टुपल के एक तत्व को एक्सेस करने के लिए एक सदस्य चर का उपयोग करने के समान प्रदर्शन होता है।बूस्ट टुपल प्रदर्शन
t1.get<2>();
t2.c;
मैं बढ़ावा के स्रोतों :: टपल में देखा है और, अगर मैं:
tuple<A, B, C> t1(A(), B(), C());
struct T { A a; B b; C c; }
T t2;
इन दो बयानों बराबर (या नगण्य अंतर के साथ) प्रदर्शन होना चाहिए: उदाहरण के लिए, निम्नलिखित घोषणा को देखते हुए उन्हें सही ढंग से समझ में आ (मुझे यकीन है कि मैंने किया था नहीं कर रहा हूँ), get<N>
समारोह वास्तव में इस कार्रवाई करता है:
C get<2>(tuple<A, B, C>& t)
{
return t.tail.tail.head;
//Generally: return t.tail. <<N times>> .head;
}
यह और अधिक एक निर्देशिका से एक लिंक की गई सूची में एक लुक-अप के समान है ect पहुँच, और, जहां तक मैं undestand, ओ (एन) की बजाय ओ (एन) जटिलता है, जो एक सदस्य के उपयोग से उम्मीद है। बढ़ावा के साथ अपने पिछले अनुभवों से, मुझे लगता है कि मुझे यह गलत तरीके से मिला है; लेकिन मेरी गलती क्या है? get
वास्तव में कैसे काम करता है?
मुझे लगता है कि यह संकलन समय अनुकूलन पर भारी निर्भर करता है – Bwmat