वहाँ एक मानकstack
, queue
, priority_queue
के अंतर्निहित कंटेनर का उपयोग करने के तरीका है? stack
और queue
की VS2008
कार्यान्वयन में _Get_container()
, लेकिन priority_queue
के लिए कोई भी:क्या एसटीएल कंटेनर एडेप्टर के अंतर्निहित कंटेनर तक पहुंचने का कोई तरीका है?
मैं एक विधि कहा जाता है मिल गया! मुझे लगता है कि यह वैसे भी मानक नहीं है।
इसके अलावा, मुझे पता है कि यह एक मूर्ख सवाल है! मुझे मानक पुस्तकालय के आधिकारिक दस्तावेज कहां मिल सकता है?
बस स्पष्टीकरण के लिए, मैं अंतर्निहित कंटेनर के साथ गड़बड़ करने की कोशिश नहीं कर रहा था।
template <class Container>
std::ostream& printOneValueContainer(std::ostream& outputstream, Container& container)
{
Container::const_iterator beg = container.begin();
outputstream << "[";
while(beg != container.end())
{
outputstream << " " << *beg++;
}
outputstream << " ]";
return outputstream;
}
// stack, queue
template
< class Type
, template<class Type, class Container = std::deque<Type> > class Adapter
>
std::ostream& operator<<(std::ostream& outputstream, const Adapter<Type>& adapter)
{
return printOneValueContainer(outputstream, adapter._Get_container());
}
.
.
.
std::stack<int> iStack;
.
.
std::cout << iStack << std::endl;
मुझे आशा है कि आप देखते हैं कि _Get_container()
मानक नहीं है, और वहाँ VS2008
कार्यान्वयन में priority_queue
के लिए कोई नहीं है: सभी मैं क्या करने की कोशिश कर रहा था यह है।
आप वास्तव में क्या जरूरत नहीं है, लेकिन कतार/ढेर/priority_queue सब एक ** संरक्षित ** सदस्य 'c' जो अंतर्निहित कंटेनर है, इसलिए यदि आप इनमें से किसी से विरासत, आप इसे उपयोग कर सकते हैं है सीधे । –
@ ईवन दिलचस्प! क्या इसका मतलब यह है कि एडेप्टर विरासत के माध्यम से विस्तार के लिए लक्षित हैं? यदि हां, तो वर्चुअल डॉटर क्यों नहीं? –
इसके अलावा, संरक्षित डेटा मेरी पुस्तक में नो-नो है - मैं इससे थोड़ा निराश हूं! –