2013-06-19 7 views
8

मैं निम्नलिखित स्निप के साथ आया लेकिन यह काफी हैकी दिखता है।std :: vector के अंतिम सम्मिलित तत्व को पॉइंटर कैसे प्राप्त करें?

vector<int> collection; 
collection.push_back(42); 
int *pointer = &(*(collection.end()--)); 

क्या अंतिम डालने वाले तत्व को पॉइंटर प्राप्त करने का कोई आसान तरीका है?

उत्तर

17

std::vector, back() अंतिम तत्व का संदर्भ देता है, इसलिए &collection.back() आपको जो चाहिए वह है।

सी ++ 17, emplace_back में नए तत्व का संदर्भ देता है। आप इसे push_back:

vector<int> collection; 
int *pointer = &collection.emplace_back(42); 
+0

धन्यवाद के बजाय इसका उपयोग कर सकते हैं। इसके अलावा, यदि वेक्टर में 'std :: pair' है, तो क्या आप जानते हैं कि आखिरी जोड़ी के दूसरे तत्व में पॉइंटर कैसे प्राप्त करें? – danijar

+6

'और (संग्रह.बैक()। दूसरा)' –

+0

@ पीटरवुड मुझे एक खराब कार्य अपवाद देता है अगर मैं उस पॉइंटर को किसी फ़ंक्शन पर बांधता हूं। क्या इसे सूचक के साथ और इस प्रकार सवाल के साथ क्या करना पड़ सकता है? अन्यथा मैं विषयों को मिश्रण न करने के लिए एक और से पूछूंगा। – danijar

संबंधित मुद्दे