boost::weak_ptr
operator<
परिभाषित किया गया है, ताकि इसे सहयोगी कंटेनरों में उपयोग किया जा सके।बूस्ट के सॉर्ट ऑर्डर :: कमजोर_पीटीआर की समाप्ति के बाद?
मेरा प्रश्न है: क्या weak_ptr
ऑब्जेक्ट्स का सॉर्ट ऑर्डर तब भी स्थिर है जब उनमें से कुछ शून्य की रीफ्रंट में बदल जाते हैं? क्या std::set
जैसे कंटेनर के साथ गड़बड़ नहीं है?
उदाहरण:
using namespace boost;
shared_ptr<A> sptrA1(new A);
weak_ptr<A> wptrA1 = sptrA1;
weak_ptr<A> wptrA2;
{ // begin Scope 1
shared_ptr<A> sptrA2(new A);
wptrA2 = sptrA2;
assert(wptrA1 < wptrA2); // assert #1
}
assert(wptrA1 < wptrA2); // assert #2
- जोर होगा # 2 हमेशा सच है, तो ज़ोर # 1 सही है?
wptrA2
एक ही राज्य में स्कोप 1 से पहले और बाद में है?
दिलचस्प। मैं http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/weak_ptr.htm में use_count के दस्तावेज़ द्वारा उलझन में था। यह कहता है "रिटर्न: 0 अगर * यह खाली है" हालांकि आपके उत्तर के मुताबिक रिवर्स (* यह 0 है तो यह खाली है) सही नहीं है, है ना? (यदि खाली को कमजोर_पीआरआर बनाने के लिए डिफ़ॉल्ट रूप से प्राप्त राज्य के रूप में परिभाषित किया गया है।) –
मैंने यहां 'use_count'' के बारे में कोई बयान नहीं दिया है। कहा जाता है कि आंतरिक संदर्भ गिनती संरचना दो मायने रखती है - केवल मजबूत संदर्भों के लिए (जब यह शून्य हिट करता है, तो पॉइंट-टू-ऑब्जेक्ट नष्ट हो जाता है) और एक जिसमें मजबूत और कमजोर संदर्भ दोनों शामिल होते हैं (जब यह शून्य हो जाता है, संदर्भ-गणना संरचना नष्ट हो जाती है)। 'Use_count' फ़ंक्शन केवल मजबूत-गिनती को देख सकता है, लेकिन मैंने बिल्कुल जांच नहीं की है, इसलिए स्वयं के लिए सत्यापित करें। :) – bdonlan