क्या कोई उदाहरण के साथ सी ++ वाक्यविन्यास नीचे बता सकता है?
vector <vector <int> > s(n,vector <int> ());
विशेष रूप से कन्स्ट्रक्टर के अंदर यह हिस्सा:
vector <int> ()
उत्तर:
जवाब के लिए 5 № 1वेक्टर के इस विशिष्ट निर्माता दो तर्क लेते हैं:
- तत्वों की संख्या।
- प्रत्येक तत्व को आवंटित करने के लिए मूल्य।
उदाहरण के लिए, यह एक वेक्टर बनाता है जिसमें मूल्य 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
लाइनों के साथ कहीं खो गया :)