के लिए वैलारे या वेक्टर का उपयोग करना चाहिए वेक्टर बनाम वालराय का प्रश्न पहले ही here से पूछा जा चुका है। मेरा प्रश्न विशेष रूप से सी ++ 11 के मामले में संदर्भित करता है। मैं "A Tour of C++" और "The C++ Programming Language" पढ़ रहा हूं। दोनों किताबें बजेर्न स्ट्राउस्ट्रप द्वारा लिखी गई हैं। पहली पुस्तक में लेखक बताते हैं कि संख्यात्मक कंप्यूटिंग (अध्याय 12) के लिए std::valarray
को प्राथमिकता दी जानी चाहिए। लेकिन फिर दूसरी पुस्तक में, अध्याय 2 9 में, लेखक std::vector
के संदर्भ में एक मैट्रिक्स कक्षा लागू करता है।सी ++ 11: क्या मुझे संख्यात्मक कंप्यूटिंग
इसके अलावा googling का थोड़ा सा करके, ऐसा लगता है कि प्रदर्शन के अनुसार, std::vector
गतिशील रूप से आवंटित "कच्चे सरणी" जितना तेज़ है।
तो सी ++ 11 के संदर्भ में, कौन सा कंटेनर संख्यात्मक कंप्यूटिंग के लिए प्राथमिकता दी जानी चाहिए?
इस पर मेरे ले होगा कि चूंकि std::vector
इसकी सामग्री operator[]
(जो कोई सीमा नहीं की जाँच के साथ डेटा के लिए एक संदर्भ रिटर्न) का उपयोग करने के लिए तेजी से पहुँच प्रदान करता है और यह है कि यह भी एक गतिशील आवंटित सरणी पर एक std::vector
उपयोग करने के लिए सुरक्षित है , std::vector
को प्राथमिकता दी जानी चाहिए। इसके अलावा, सी ++ 11 के बाद से:
std::vector
std::vector::data()
- std :: वेक्टर का उपयोग कर अंतर्निहित डेटा लिए सीधी पहुँच प्रदान का उपयोग कर आदेश कम स्मृति का उपयोग करने के आकार दिया जा सकता
std::vector::shrink_to_fit()
के रूप में आप क्यों उपाय नहीं है और सत्यापित करें जो तेजी से किया जाएगा पर विचार करना चाहते। आधुनिक सी ++ दुनिया में, std :: वेक्टर को डिफ़ॉल्ट कंटेनर के रूप में उपयोग नहीं किया जाना चाहिए जब तक हमारे पास ऐसा करने का कारण न हो। –