Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में वेक्टर के सरणी पर लाभ


वेक्टर और सरणी में अंतर

वेक्टर एक टेम्पलेट क्लास है और केवल C++ का निर्माण है जबकि सरणी बिल्ट-इन भाषा निर्माण है और C और C++ दोनों में मौजूद है।

वेक्टर को लिस्ट इंटरफेस के साथ डायनामिक सरणी के रूप में लागू किया जाता है जबकि सरणी को प्रिमिटिव डेटा टाइप इंटरफेस के साथ स्टैटिकली या डायनामिकली लागू किया जा सकता है।

वेक्टर और सरणी के बीच मुख्य अंतर

विशेषता वेक्टर (std::vector) सरणी (Array)
आकार डायनामिक - रनटाइम पर बदला जा सकता है स्टैटिक - कंपाइल टाइम पर फिक्स्ड
रिजर्व स्पेस reserve() से क्षमता पूर्व-आरक्षित कर सकते हैं रिजर्व स्पेस नहीं दे सकते
प्रकार क्लास डेटा प्रकार
तत्व प्रकार कोई भी प्रकार के ऑब्जेक्ट स्टोर कर सकते हैं केवल सजातीय (homogeneous) मान
मेमोरी प्रबंधन स्वचालित मैनुअल (डायनामिक के लिए)
बाउंड्स चेकिंग at() मेथड से संभव कोई बाउंड्स चेकिंग नहीं
आकार जानना size() फंक्शन sizeof या अलग वेरिएबल

सरणी के लाभ

  • सदस्यों के लिए कुशल रैंडम एक्सेस समर्थन
  • सरणी को सॉर्ट करना आसान
  • फिक्स्ड संख्या में तत्वों को स्टोर करने के लिए अधिक उपयुक्त
  • कम मेमोरी ओवरहेड
  • C के साथ संगत

सरणी के नुकसान

  • तत्वों को हटाया नहीं जा सकता
  • सरणी का डायनामिक निर्माण संभव नहीं (C++ में new/delete के बिना)
  • एकाधिक डेटा प्रकार स्टोर नहीं कर सकते
  • आकार रनटाइम पर नहीं बदल सकता
  • कोई बिल्ट-इन मेथड्स नहीं (push_back, pop_back, आदि)

वेक्टर के लाभ

  • वेक्टर का आकार बदला जा सकता है (push_back, pop_back, resize)
  • एकाधिक ऑब्जेक्ट्स स्टोर कर सकते हैं (टेम्पलेट के कारण किसी भी प्रकार के)
  • वेक्टर से तत्व हटाए जा सकते हैं (erase, clear, pop_back)
  • बाउंड्स चेकिंग के लिए at() मेथड
  • इटरेटर्स समर्थन
  • STL एल्गोरिदम के साथ संगत
  • स्वचालित मेमोरी प्रबंधन
  • कॉपी कंस्ट्रक्टर और असाइनमेंट ऑपरेटर

वेक्टर के नुकसान

  • वेक्टर एक ऑब्जेक्ट है, मेमोरी खपत अधिक होती है
  • थोड़ा धीमा एक्सेस (बाउंड्स चेकिंग के कारण at() में)
  • रिकैलोकेशन पर इटरेटर्स अमान्य हो सकते हैं

कोड उदाहरण

#include <iostream>
#include <vector>
#include <array>
using namespace std;

int main() {
    // सरणी - फिक्स्ड साइज
    int arr[5] = {1, 2, 3, 4, 5};
    // arr[5] = 6; // एरर: आउट ऑफ बाउंड्स

    // वेक्टर - डायनामिक साइज
    vector<int> vec = {1, 2, 3, 4, 5};
    vec.push_back(6); // ठीक है
    vec.push_back(7); // ठीक है

    cout << "Array size: " << sizeof(arr)/sizeof(arr[0]) << endl;
    cout << "Vector size: " << vec.size() << endl;

    // वेक्टर में इंसर्शन
    vec.insert(vec.begin() + 2, 99); // इंडेक्स 2 पर 99 डालें

    // वेक्टर से डिलीशन
    vec.erase(vec.begin() + 1); // इंडेक्स 1 हटाएं

    return 0;
}

निष्कर्ष

आधुनिक C++ में, std::vector को सरणी पर प्राथमिकता दी जाती है जब तक कि आपके पास बहुत विशिष्ट कारण न हो (जैसे अत्यधिक प्रदर्शन-महत्वपूर्ण कोड जहां हर बाइट मायने रखता है, या C API के साथ इंटरऑपरेबिलिटी)।

  1. - C/C++ में सरणी (Arrays) - पूर्ण गाइड

    सरणी क्या है? सरणी एक ही डेटा प्रकार के निश्चित संख्या में तत्वों का संग्रह है, जो सन्निकट मेमोरी स्थानों में संग्रहीत होते हैं। घोषणा और आरंभीकरण // घोषणा data_type array_name[size]; // उदाहरण float percentage[10]; int marks[5] = {85, 90, 78, 92, 88}; char name[] = Hello; // आकार स्वचालित: 6 (नल

  1. - C/C++ में ऐरे (Arrays)?

    ऐरे (Array) एक ही प्रकार के एलिमेंट्स का एक क्रमिक संग्रह (sequential collection) है। ऐरे का उपयोग डेटा के संग्रह को संग्रहीत करने के लिए किया जाता है, लेकिन ऐरे को एक ही प्रकार के वेरिएबल्स के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है। व्यक्तिगत वेरिएबल्स घोषित करने के बजाय, जैसे number0,

  1. C/C++ में मल्टीडायमेंशनल ऐरे का इनिशियलाइज़ेशन C/C++ में मल्टीडायमेंशनल ऐरे का इनिशियलाइज़ेशन

    मल्टीडायमेंशनल ऐरे में, ऐरे का डायमेंशन 1 से अधिक होना चाहिए। निम्नलिखित डायग्राम 3 x 3 x 3 डायमेंशन वाले मल्टीडायमेंशनल ऐरे के लिए मेमोरी आवंटन रणनीति दिखाता है। यह मल्टीडायमेंशनल ऐरे को इनिशियलाइज़ करने के लिए एक C++ प्रोग्राम है। एल्गोरिदम Begin मल्टीडायमेंशनल ऐरे के एलिमेंट्स इनिशियलाइज