से कैसे बचें क्योंकि सदिश तत्वों को संगत रूप से संग्रहीत किया जाता है, मुझे लगता है कि इसमें कुछ push_back के बाद एक ही पता नहीं हो सकता है, क्योंकि प्रारंभिक आवंटित स्थान पर्याप्त नहीं हो सकता है।क्या std :: vector अपना पता बदलता है?
मैं एक कोड है, जहां मैं एक सदिश में एक तत्व के लिए एक संदर्भ की जरूरत है, की तरह पर काम कर रहा हूँ:
int main(){
vector<int> v;
v.push_back(1);
int *ptr = &v[0];
for(int i=2; i<100; i++)
v.push_back(i);
cout << *ptr << endl; //?
return 0;
}
लेकिन यह जरूरी सच नहीं है कि ptr
v[0]
के लिए एक संदर्भ है, है ना शामिल? इसकी गारंटी देने का एक अच्छा तरीका कैसे होगा?
मेरा पहला विचार पॉइंटर्स और गतिशील आवंटन के वेक्टर का उपयोग करना होगा। मैं सोच रहा हूं कि ऐसा करने का कोई आसान तरीका है?
पीएस .: वास्तव में मैं int के बजाय कक्षा के वेक्टर का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि मुद्दे समान हैं।
क्यों आपको इसकी आवश्यकता होने पर '& v [0]' क्यों नहीं मिलता है? – kennytm
आप पॉइंटर के बजाय तत्व की अनुक्रमणिका रख सकते हैं और उसके बाद() 0 ऑपरेटर [] –
@ केनीटीएम का उपयोग करके इसे एक्सेस कर सकते हैं हालांकि: यह मेरे वास्तविक कोड में ऊपर वर्णित नहीं है, मैं यह नहीं बता सकता कि कौन सी अनुक्रमणिका तक पहुंच है अब जब मुझे इसकी ज़रूरत है। – kunigami