के लिए बॉयलरप्लेट टाइपपीफ, मानक लाइब्रेरी या बूस्ट के भीतर, किसी प्रकार की यूटिलिटी बेस क्लास है, जो आवश्यक टाइपपीफ (size_type, value_type, आदि ...) के साथ कस्टम एसटीएल-संगत अनुक्रम को पॉप्युलेट करने के लिए है। मैं boost::iterator_facade की तरह कुछ सोच रहा हूं, लेकिन कंटेनर के लिए।एसटीएल-संगत कंटेनर
मैं अपना खुद का रोल-अप करने जा रहा था, लेकिन यह सुनिश्चित करना चाहता था कि ऐसी कोई चीज़ पहले से मौजूद न हो।
अद्यतन:
यह उपयोगिता आधार वर्ग मैं के साथ आया है, इस मामले में किसी को भी यह उपयोगी पाता है:
template <class C>
class ContainerAdapter
{
public:
typedef C::value_type value_type;
typedef C::reference reference;
typedef C::const_reference const_reference;
typedef C::const_iterator iterator;
typedef C::const_iterator const_iterator;
typedef C::difference_type difference_type;
typedef C::size_type size_type;
protected:
typedef C::container_type;
};
// Usage
class MyCustomContainer : public ContainerAdapter< std::vector<int> >
{
...
};
ContainerAdapter बस "गूँज" नेस्टेड एक कस्टम कंटेनर की अंतर्निहित कंटेनर के typedefs। वास्तव में इसके लिए कुछ भी नहीं है।
लोग value_type और iterator का उपयोग करते हैं क्योंकि यह विकल्पों की तुलना में आसान है, लेकिन मैं आमतौर पर value_type और संदर्भ के बजाय उपयोग करता हूं, उदाहरण के लिए (और वेक्टर बुरा है)। क्या आप निश्चित रूप से उन अन्य नेस्टेड टाइपिफ्स प्रदान करना आपके लिए फायदेमंद हैं? आम तौर पर मैं उन कार्यों को आइटम पास करता हूं जहां उन्हें एक कॉन्स के रूप में बाध्य किया जाएगा और वैसे भी, नेस्टेड const_reference typedef को कभी स्पर्श नहीं किया जाता है। –
@Fred: मैं बस अपने कंटेनर को BOOST_FOREACH, बूस्ट रेंज, std :: back_insertion_iterator, आदि जैसी चीज़ों के अनुकूल होने के बारे में चिंतित हूं। अगर मुझे केवल सभी टाइपिफ़ीज़ का न्यूनतम सबसेट प्रदान करने की आवश्यकता है, तो मैं जानना चाहता हूं कौन कौन से। मुझे लगता है कि प्रयोग करना और पता लगाना काफी आसान है। –
सच है, लेकिन सामान्य उपयोगिताओं को आम तौर पर अज्ञेयवादी माना जाता है; 0x ऑटो उसके लिए बहुत अच्छा है। :) –