बस एक पक्ष नोट के रूप में
:
नई सी ++ मानक variadic टेम्पलेट्स का परिचय और वह भी tuples के साथ। जीसीसी और विजुअल स्टूडियो (कम से कम) इन का समर्थन करते हैं। तो यदि यह आपके लिए संभव है (यानी यदि सभी समर्थित कंपाइलर्स टुपल्स का समर्थन करते हैं जो पहले से ही बहुत संभव है) तो आप इसका उपयोग कर सकते हैं।
एकमात्र समस्या यह है कि कुछ कंपाइलर्स अभी भी std :: tr1 नेमस्पेस में tuple है और दूसरों के पास पहले से ही std नेमस्पेस में है। कभी-कभी आपको कभी-कभी शामिल करने की आवश्यकता होती है। लेकिन आप कुछ मैक्रोज़ को परिभाषित करने के लिए अपनी बिल्ड सिस्टम को कॉन्फ़िगर कर सकते हैं जो आपको कई योजनाओं का समर्थन करने में मदद करता है। तुम कर सकते हो तुम, उदाहरण के लिए केवल दृश्य स्टूडियो 10 और/या एक काफी नया जीसीसी संस्करण का समर्थन करने के लिए की जरूरत है निम्नलिखित:
#include <list>
#include <string>
#include <tuple>
std::list<std::tuple<int, string> > time;
cmake साथ उदाहरण के लिए आप आप सभी के लिए समर्थन एक हेडर फाइल है, जो लाता है उत्पन्न कर सकता है कंपाइलर्स, जो टुपल्स का समर्थन करते हैं (और थोड़ा और काम के साथ भी गिरावट के रूप में बढ़ावा का उपयोग करते हैं)। उदाहरण की तरह दिखाई देगा ऊपर इस प्रकार
#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 430)
# define GCC_OLDER_THAN_430 1
#endif
#if defined(_MSC_VER) && (_MSC_VER < 1600 /* 2010 */)
# define MSC_OLDER_THAN_2010 1
#endif
#if defined(GCC_OLDER_THAN_430)
# define TR1_IN_TR1_SUBDIRECTORY 1
#endif
#if defined(ZORBA_GCC_OLDER_THAN_430) || defined(ZORBA_MSC_OLDER_THAN_2010)
# define TR1_NS_IS_STD_TR1 1
#endif
#ifdef TR1_NS_IS_STD_TR1
# define TR1_NS std::tr1
#else
# define TR1_NS std
#endif
#ifdef TR1_IN_TR1_SUBDIRECTORY
# include <tr1/tuple>
#else
# include <tuple>
#endif
फिर,:
#include <string>
#include <list>
#include "tuple.h"
std::list<TR1_NS::tuple<int, std::string> > time;
इसमें लगभग सभी पर काम करना चाहिए
ऐसा करने के लिए, आप एक tuple.h.cmake फ़ाइल की तरह कुछ बन जाएगा हाल के कंपाइलर्स
स्रोत
2011-06-26 06:03:38
गूंगा प्रश्न: क्या आपको नेमस्पेस एसडीडी का उपयोग करके नामस्थान स्टेड का उपयोग करना याद रखना था? आपको प्राप्त होने वाले विशिष्ट त्रुटि संदेश क्या हैं? – Mikola
क्या आपके पास "नामस्थान वृद्धि का उपयोग करना है;" आपके कोड में? मुझे लगता है कि आपको "नेमस्पेस std का उपयोग करके" की आवश्यकता है; भी। –
मुझे लगता है कि, आप उस उद्देश्य के लिए std :: map का उपयोग कर सकते हैं। यह जोड़े 'int-string' रखेगा, स्वचालित रूप से 'int' मानों द्वारा क्रमबद्ध किया जाएगा। [यहां] (http://www.cplusplus.com/reference/stl/map/) विवरण है। –
beduin