2016-10-31 3 views
5

मेरे पास दो सी ++ सूचियां, std::list<T> List1 और std::list<T*> List2; हैं। अब, मैं निम्नलिखित आपरेशन कई बार ऐसा करने के लिए करना चाहते हैं:सी ++: पॉइंटर्स के साथ push_back() और बैक() का व्यवहार

List1.push_back(new_object); 
List2.push_back(&List1.back()); 

मेरा प्रश्न: List2 में संदर्भ, वैध रहने करता है प्रत्येक चरण के बाद? I.e .: क्या सूची 2 में पहला तत्व अभी भी सूची 1 में पहले का जिक्र कर रहा है?

+3

अंग्रेजी में समझाएं सी ++ में स्पष्ट क्या है। बस 'std :: list सूची 1 लिखें; 'आदि – MSalters

उत्तर

9

हां, यह वैध रहता है। std::list सम्मिलन iterators (या इस मामले में सामग्री के पॉइंटर्स) को अमान्य नहीं करता है।

+3

अधिकांश कंटेनर द्वारा साझा की गई संपत्ति, लेकिन महत्वपूर्ण रूप से ** ** ** ** std :: vector ' द्वारा नहीं। – MSalters

+0

@MSalters, कीमत हमें कैश अनुकूल पुनरावृत्ति के लिए भुगतान करना होगा। – StoryTeller

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद! – Richard

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