/ / सी ++ 2 डी वेक्टर के वाक्यविन्यास - सी ++, एसटीएल

2 डी वेक्टर के सी ++ वाक्यविन्यास - सी ++, एसटीएल

क्या कोई उदाहरण के साथ सी ++ वाक्यविन्यास नीचे बता सकता है?

vector <vector <int> > s(n,vector <int> ());

विशेष रूप से कन्स्ट्रक्टर के अंदर यह हिस्सा:

vector <int> ()

उत्तर:

जवाब के लिए 5 № 1

वेक्टर के इस विशिष्ट निर्माता दो तर्क लेते हैं:

  1. तत्वों की संख्या।
  2. प्रत्येक तत्व को आवंटित करने के लिए मूल्य।

उदाहरण के लिए, यह एक वेक्टर बनाता है जिसमें मूल्य 5 गुणा 5 गुना होता है।

std::vector<int> vec(3, 5);

vector<int>() एक डिफ़ॉल्ट निर्मित उदाहरण है vector<int>। तो आप एन वेक्टर युक्त एक वेक्टर बना रहे हैं, प्रत्येक खाली।


जवाब के लिए 0 № 2
#include <vector>
using namespace std;

int main()
{
int N = 10;
std::vector< std::vector<int> vector2DA(N, std::vector< int>(N));
return 0;

}

यह कोड बनाओ vector2D 10x10, पहला पैरामीटर कन्स्ट्रक्टर आकार मूल वेक्टर (वेक्टर 2 डीए (आकार, ऑब्जेक्ट व्हाइचिस कॉन्टेन) है), जिसमें अन्य वेक्टर होते हैं, जिनमें आकार 10 होता है (std::vector< int>(size))। हमारे पास है vector2D 10x10।


जवाब के लिए 0 № 3

सबसे पहले, vector का vectorएस बिल्कुल "2 डी वेक्टर" नहीं है। की "पंक्तियां" vector<vector<>> मेमोरी लेआउट और अर्थात् दोनों के मामले में पूरी तरह से स्वतंत्र हैं। बेहतर विकल्प हैं, उदा। Boost.Multi_array.

तो हमारे पास हैं vector <int> ()। संदर्भ के आधार पर इसका मतलब हो सकता है कि दोनों टोरोरी ऑब्जेक्ट प्रारंभिकरण या फ़ंक्शन घोषणा। प्रश्न में उदाहरण वास्तव में पर्याप्त संदर्भ प्रदान नहीं करता है:

vector <vector <int> > s(n,vector <int> ());

अगर n एक प्रकार का नाम होता है, तो यह पंक्ति एक समारोह घोषणा है। बेशक n शायद एक है int, लेकिन स्पष्ट रूप से यह स्पष्ट करना बेहतर होगा कि आप एक डिफ़ॉल्ट-निर्मित चाहते हैं vector<int> एक दूसरे तर्क के रूप में:

vector <vector <int> > s(n,vector <int> {});

यहाँ vector <int> {} अस्पष्ट रूप से मतलब है "प्रकार का एक डिफ़ॉल्ट निर्मित अस्थायी वस्तु vector<int>", और आप इसे पास करते हैं vector<vector<int>> अपनी पंक्तियों को आरंभ करने के लिए एक मूल्य के रूप में निर्माता।

यह हमें एक और अवलोकन में लाता है: std::vector मूल्य-initializes डिफ़ॉल्ट रूप से इसके तत्व, जिसका अर्थ है कि वही परिणाम प्राप्त किया जा सकता है:

vector <vector <int> > s(n);

अंत में, की उपस्थिति vector<int>() मूल वक्तव्य में संकेतों का संकेत है कि यह 2 डी वेक्टर की "चौड़ाई" स्थापित करने का इरादा रख सकता है:

vector <vector <int> > s(n,vector <int> (m));

परंतु m लाइनों के साथ कहीं खो गया :)