मेरा सवाल सरल है: एसटीडी :: वेक्टर तत्व सन्निहित होने की गारंटी है? आदेश शब्द में, क्या मैं सूचक का उपयोग 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ब्लॉक के अंदर म्यूट करते हैं तो आप मुश्किल में हैं । हालांकि, मुझे आपके सवाल का जवाब नहीं पता है, इसलिए मैं सिर्फ एक टिप्पणी छोड़ रहा हूं। :)