मुझे पता है कि मैन्युअल गतिशील स्मृति आवंटन सामान्य रूप से एक बुरा विचार है, लेकिन क्या यह कभी-कभी std::vector
का उपयोग करने से बेहतर समाधान है?std :: वेक्टर का उपयोग करने के लिए ओवरहेड?
एक क्रूड उदाहरण देने के लिए, अगर मुझे n
पूर्णांक की एक सरणी स्टोर करना पड़ा, जहां n
< = 16 कहें।
std::vector<int> data;
यह बिल्कुल हमेशा एक बेहतर विचार एक std::vector
उपयोग करने के लिए या व्यावहारिक स्थितियों में, जहां मैन्युअल गतिशील स्मृति आवंटन एक होगा हो सकता है: मैं
int* data = new int[n]; //assuming n is set beforehand
का उपयोग कर या एक सदिश का उपयोग कर इसे लागू कर सकता है दक्षता बढ़ाने के लिए बेहतर विचार?
आपको 'push_back' । 'std :: vector (n)' है * लगभग * आपके गतिशील सरणी संस्करण के बराबर है, सिवाय इसके कि 'n' पूर्णांक मान हैं, इसलिए शून्य, वेक्टर में प्रारंभ किया गया है। –
juanchopanza
@juanchopanza: उचित बिंदु। मैंने 'push_back' भाग हटा दिया। यह तुलना का हिस्सा नहीं माना जाता था। –