मुझे अपने कार्यक्रम के लिए सूचियों का उपयोग करने की आवश्यकता है और यह तय करने की आवश्यकता है कि मैं std :: vector या std :: list का उपयोग करता हूं या नहीं। वेक्टर के साथ समस्या यह है कि कोई निकासी विधि नहीं है और सूची के साथ कोई ऑपरेटर नहीं है []। इसलिए मैंने अपनी खुद की कक्षा std :: सूची को विस्तारित करने और [] ऑपरेटर को अधिभारित करने का निर्णय लिया।विस्तारित std :: सूची
मेरे कोड इस तरह दिखता है:
#include <list>
template <class T >
class myList : public std::list<T>
{
public:
T operator[](int index);
T operator[](int & index);
myList(void);
~myList(void);
};
#include "myList.h"
template<class T>
myList<T>::myList(void): std::list<T>() {}
template<class T>
myList<T>::~myList(void)
{
std::list<T>::~list();
}
template<class T>
T myList<T>::operator[](int index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count != index)itr++;
return *itr;
}
template<class T>
T myList<T>::operator[](int & index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count != index)itr++;
return *itr;
}
मैं इसे संकलन कर सकते हैं लेकिन मैं एक लिंकर त्रुटि मिलती है अगर मैं इसे इस्तेमाल करने की कोशिश। कोई विचार?
आप 'टी ऑपरेटर [] (पूर्णांक सूचकांक) है,' और 'टी ऑपरेटर [] (पूर्णांक और सूचकांक);' लेकिन आप कर सकते हैं 'टी एंड ऑपरेटर [] (इंट इंडेक्स) 'और' कॉन्स्ट टी एंड ऑपरेटर [] (इंट इंडेक्स) कॉन्स' का उपयोग करना चाहते हैं। साथ ही, उन कार्यों के अंदर आप गिनती का ट्रैक रखने के लिए एक नया चर बनाने के बजाय 'जबकि (अनुक्रमणिका -) 'कर सकते हैं। – Dennis