मेरे पास एक कक्षा है जो एक मनमानी संख्या में कार्यकर्ता वस्तु उत्पन्न करती है जो उनके परिणामों को std::vector
में गणना करती है। मैं कुछ बिंदुओं पर कुछ कार्यकर्ता वस्तुओं को हटाने जा रहा हूं लेकिन मैं अपने परिणामों को केवल एक निश्चित आदेश में रखना चाहता हूं जो केवल spawned
वर्ग को ज्ञात है। इस प्रकार मैं कक्षा एइटरेटर बनाम संदर्भ बनाम सूचक
में आउटपुट के लिए वैक्टर प्रदान कर रहा हूं। मेरे पास तीन विकल्प हैं: मैं या तो वेक्टर, संदर्भ या इटरेटर को सदस्यों के रूप में पॉइंटर्स कर सकता हूं। जबकि इटरेटर विकल्प में कुछ ड्रॉ बैक होते हैं (इटरेटर को बढ़ाया जा सकता है।) अगर मुझे पॉइंटर्स या संदर्भ स्पष्ट हैं तो मुझे यकीन नहीं है। मुझे लगता है कि संदर्भ बेहतर हैं क्योंकि वे न्यूल नहीं हो सकते हैं और एक क्रंचर को वेक्टर की उपस्थिति की आवश्यकता होगी।
संदर्भों की वैधता के बारे में मुझे सबसे ज्यादा अनिश्चितता है। क्या उन्हें std::list< std::vector<int> >
पर कुछ परिचालनों से अवैध कर दिया जाएगा? क्या वे ऑपरेशन std::list
के इटरेटर्स को अमान्य करने के समान हैं? क्या कोई और दृष्टिकोण है जिसे मैं अभी नहीं देख रहा हूं? इसके अलावा एक कंटेनर के साथ युग्मन सही महसूस नहीं करता है: मैं क्रंचर वर्ग में एक विशिष्ट कंटेनर को मजबूर करता हूं। स्पष्टता के लिए प्रदान की
कोड: पुनरावर्तक अवैध है
#include <list>
#include <vector>
#include <boost/ptr_container/ptr_list.hpp>
class Cruncher {
std::vector<int>* numPointer;
std::vector<int>& numRef;
std::list< std::vector<int> >::iterator numIterator;
public:
Cruncher(std::vector<int>*);
Cruncher(std::vector<int>&);
Cruncher(std::list< std::vector<int> >::iterator);
};
class A {
std::list< std::vector<int> > container;
boost::ptr_list< std::vector<int> > container2;
std::vector<Cruncher> cruncherList;
};
मैं संदर्भ में स्टोर करने के लिए std :: सूची का उपयोग करने जा रहा था जैसा कि इंगित किया गया है नमूना। यदि आप मानक के अपने उद्धरण को उस अनुभाग में बदलते हैं जो सूचियों के लिए अमान्यता बताता है तो आपका उत्तर ठीक है। – pmr
@pmr - सूचियों के बारे में अधिक जानकारी शामिल करने के लिए मेरा उत्तर अपडेट किया गया। –