पर आंतरिक सूचक प्राप्त करें I आवंटित संसाधन को पुनः प्राप्त करने के बारे में चिंता किए बिना आवंटित स्मृति स्थान प्राप्त करने के लिए निम्न विधि का उपयोग करें।सी ++ - वेक्टर
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vecInts;
for(int iInd=0; iInd<10; i++)
vecInts.push_back(iInd);
int* pInt = &vecInts[0]; // Is this a good method?
// now can I use pInt to modify the value of the vecInts?
// I will NOT resize the vector and just simply manipulate the values inside
return 0;
}
हालांकि, मुझे यकीन नहीं है कि ऐसी विधि एक अच्छी है या नहीं।
आप
क्या हम इसे एक हैक कह सकते हैं? चूंकि std :: वेक्टर कॉन्स्ट टी * गेट नामक फ़ंक्शन प्रदान नहीं करता है? - धन्यवाद – q0987
नहीं, यह एक हैक नहीं है। एक वेक्टर उन स्थानों पर उपयोग किया जाना चाहिए जहां एक सी प्रोग्राम एक सरणी का उपयोग करेगा। –
मेरी राय में उचित नहीं है। यह सुरक्षित होने के लिए जाना जाता है, और कभी-कभी उपयोगी होता है। उदाहरण के लिए, http://en.wikipedia.org/wiki/Vector_(C%2B%2B) 'memcpy' और 'printf' पर कॉल के साथ ऐसे पॉइंटर का उपयोग करके दिखाता है। यदि आप इटरेटर्स के साथ अधिक आरामदायक हैं, तो आप हमेशा इसके बजाय एक का उपयोग कर सकते हैं, भले ही केवल पता ala 'और (* v.begin()) प्राप्त करने के लिए '(इसी प्रकार केवल वैध है जब' v.size()> 0')। –