मुझे पॉइंटर्स के कंटेनर की आवश्यकता है। क्या आप boost::ptr_vector<T>
या std::vector<boost::shared_ptr<T> >
की अनुशंसा करेंगे? (या कुछ और?)क्या मुझे boost :: ptr_vector <T> या वेक्टर <boost :: shared_ptr <T>> का उपयोग करना चाहिए?
हैं कि ब्याज की है, मेरे वास्तविक डेटा संरचना अपेक्षाकृत जटिल है (here देखें) और वर्तमान में वस्तुओं, नहीं संकेत संग्रहीत करता है, लेकिन मैं इसे बदल नहीं (सूचक कंटेनरों का इस्तेमाल किया), क्रम में करना चाहते हैं
typedef std::multimap<Foo0, std::map<int, double> > VecElem;
std::vector<VecElem> vec;
यह अनावश्यक प्रतिलिपि कहां होती है? –
@ इदान: जब भी आप वेक्टर या उपरोक्त से मल्टीमैप में कुछ डालते हैं। – Frank
@Idan: जब आपके पास एक कंटेनर होता है जो पॉइंटर्स स्टोर करता है, तो जब आप ऑब्जेक्ट्स स्टोर करते हैं तो डेटा जोड़ने पर केवल पॉइंटर की प्रतिलिपि बनाई जाएगी, वास्तविक वस्तुओं की प्रतिलिपि बनाई जाएगी। यह एक समस्या है जब आप उन वस्तुओं से निपट रहे हैं जो कॉपी करने के लिए महंगी हैं। – sbi