सी ++ एसटीएल कंटेनर का उपयोग करते समय, किन स्थितियों के संदर्भ मूल्यों का उपयोग किया जाना चाहिए? उदाहरण के लिए कंटेनर पर अगले फ़ंक्शन कॉल के बाद किसी भी संदर्भ को अमान्य कर दिया गया है?एसटीएल कंटेनर में लगातार संदर्भ
{
std::vector<int> vector;
vector.push_back (1);
vector.push_back (2);
vector.push_back (3);
vector[0] = 10; //modifies 0'th element
int& ref = vector[0];
ref = 10; //modifies 0'th element
vector.push_back (4);
ref = 20; //modifies 0'th element???
vector.clear();
ref = 30; //clearly obsurd
}
मैं समझता हूं कि एसएलएल के अधिकांश कार्यान्वयन में यह काम करेगा, लेकिन मुझे मानक घोषणा की आवश्यकता है।
--edit: इम रुचि क्योंकि मैं (http://stxxl.sourceforge.net/) ग के लिए पुस्तकालय ++ STXXL आज़माने के लिए चाहता था, लेकिन मैंने महसूस किया कि संदर्भ कंटेनर से वापस नहीं लगातार इसने कई पढ़ता नहीं संगत परिवर्तन किए बिना थे, और इसलिए (हालांकि सतही) मेरे मौजूदा एसएलएल कोड के लिए। एक उदाहरण:
{
std::vector<int> vector;
vector.push_back (1);
vector.push_back (2);
int& refA = vector[0];
int& refB = vector[1]; //refA is not gaurenteed to be valid anymore
}
मैं सिर्फ अगर यह मतलब है कि STXXL कंटेनर में जानना चाहता था जहां% नहीं 100 संगत, या वास्तव में अगर मैं पूरे समय एक असुरक्षित/कार्यान्वयन निर्भर रास्ते में एसटीएल कंटेनरों का इस्तेमाल किया गया था।
मुझे उनके अक्सर पूछे जाने वाले प्रश्न http://algo2.iti.uni-karlsruhe.de/dementiev/stxxl/trunk/FAQ.html पर एक प्रासंगिक उत्तर मिला "आपको बाहरी मेमोरी डेटा संरचना में तत्वों के संदर्भों को पास या स्टोर नहीं करना चाहिए जब संदर्भ का उपयोग किया जाता है, तो तत्व जिसमें ब्लॉक होता है, अब आंतरिक स्मृति में नहीं हो सकता है। ", इसलिए उत्तर नहीं है, कंटेनर तत्वों के संदर्भ उनके एसटीएल समकक्षों के समान व्यवहार नहीं है। – Akusete
सी ++ मानक के माध्यम से देख रहे हैं, सभी कंटेनरों में टाइपपीफ 'संदर्भ', 'const_reference',' सूचक 'और' const_pointer' है जो अंतर्निहित आवंटक से संबंधित टाइपपीफ पर सेट हैं। ऐसा प्रतीत होता है कि मानकों की समिति शुरू में रेफरी और पॉइंटर्स के लिए एक अमूर्तता स्थापित करना चाहता था ताकि इन चीजों को एक कंटेनर द्वारा "प्रबंधित" किया जा सके (जिस तरह से यह पहले से ही हैं) प्रॉक्सी का उपयोग करते हुए, लेकिन हालांकि भाग्य बंद कर दिया - मानक जनादेश कि 'आवंटक :: सूचक 'प्रकार' टी * 'आदि का प्रकार, टाइपिफ़ को स्वयं अंततः व्यर्थ बना देता है। –
मुझे अधिकांश एसटीएल कंटेनरों के इंटरफेस के माध्यम से पढ़कर एक ही भावना मिली, लेकिन मुझे कोई चर्चा नहीं मिली कि वे केवल आधे रास्ते क्यों गए। – Akusete