मेरा प्रश्न सरल है: std :: vector तत्वों को संगत होने की गारंटी है? शब्द के क्रम में, क्या मैं एक सीडी-वेक्टर के रूप में std :: वेक्टर के पहले तत्व में पॉइंटर का उपयोग कर सकता हूं?क्या std :: वेक्टर तत्व संगत होने की गारंटी रखते हैं?
यदि मेरी याददाश्त मुझे अच्छी तरह से सेवा देती है, तो सी ++ मानक ने ऐसी गारंटी नहीं दी है। हालांकि, std :: वेक्टर आवश्यकताएं ऐसी थीं कि यदि तत्व संगत नहीं थे तो उनसे मिलने के लिए लगभग असंभव था।
क्या कोई इसे स्पष्ट कर सकता है?
उदाहरण:
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'
}
}
मुझे पता है कि यदि आप 'if' ब्लॉक के अंदर' मान 'को म्यूट करते हैं तो आप परेशानी में हैं। मुझे आपके प्रश्न का उत्तर नहीं पता, हालांकि, मैं सिर्फ एक टिप्पणी छोड़ रहा हूं। :) –
@ ग्रेग: क्या परेशानी - क्या आप थोड़ा विस्तार कर सकते हैं? – Reunanen
मुझे लगता है कि उनका मतलब था कि नए मानों को धक्का देना "realloc" को ट्रिगर कर सकता है जो सरणी को अमान्य बनने का कारण बनता है। –