मेरा सवाल सरल है: एसटीडी :: वेक्टर तत्व सन्निहित होने की गारंटी है? आदेश शब्द में, क्या मैं सूचक का उपयोग std के पहले तत्व के लिए कर सकता हूँ :: C- सरणी के रूप में वेक्टर?
यदि मेरी मेमोरी मुझे अच्छी तरह से परोसती है, तो C ++ मानक ने ऐसी कोई गारंटी नहीं दी। हालांकि, एसटीडी :: वेक्टर आवश्यकताएं ऐसी थीं कि अगर तत्व सन्निहित नहीं थे, तो उनसे मिलना लगभग असंभव था।
क्या कोई इसे स्पष्ट कर सकता है?
उदाहरण:
std::vector<int> values;
// ... fill up values
if( !values.empty() )
{
int *array = &values[0];
for( int i = 0; i < values.size(); ++i )
{
int v = array[i];
// do something with 'v'
}
}
values
करता है, विशेष रूप से जो इसका आकार बदलता है (उदाहरण के लिए push_back()
), अंतर्निहित वेक्टर के एक पुनर्स्थापन का संकेत दे सकता है जो कि कॉपी किए गए पॉइंटर को अमान्य करता है array
। यह वेक्टर में सूचक के बजाय वेक्टर का उपयोग करने के पीछे समान सिद्धांत है। :)
values
उसif
ब्लॉक के अंदर म्यूट करते हैं तो आप मुश्किल में हैं । हालांकि, मुझे आपके सवाल का जवाब नहीं पता है, इसलिए मैं सिर्फ एक टिप्पणी छोड़ रहा हूं। :)