2013-04-08 5 views
7

मेरी कक्षा, GameBoard, एक सदस्य चर है जो वर्ग Tile के किसी ऑब्जेक्ट का 2 डी वेक्टर है। GameBoard कन्स्ट्रक्टर पैरामीटर के रूप में चौड़ाई और ऊंचाई लेता है।चौड़ाई और ऊंचाई के अनुसार वस्तुओं के 2 डी वेक्टर का आकार कैसे बदल सकता हूं?

मैं Tile ऑब्जेक्ट्स के 2 डी वेक्टर को कन्स्ट्रक्टर को पारित चौड़ाई और ऊंचाई के अनुसार आकार बदलने के लिए कैसे प्राप्त कर सकता हूं? मैं इसे Tile ऑब्जेक्ट्स से कैसे भर सकता हूं ताकि मैं ऐसा कुछ कर सकूं?

myVector[i][j].getDisplayChar(); 

स्निपेट

m_vvTiles.resize(iHeight); 

for(auto it = m_vvTiles.begin(); it != m_vvTiles.end(); it++){ 

    (*it).resize(iWidth,Tile(' ')); 
} 
+0

'std :: vector <>' बहुआयामी नहीं है। आप किस वेक्टर कक्षा का उपयोग कर रहे हैं? – cdhowie

+0

std :: वेक्टर > m_vvTiles; यह इस तरह काम करता है कि चार प्रकार – Habit

उत्तर

15

आपको अलग से बाहरी और भीतरी वैक्टर आकार बदलने के लिए है।

matrix.resize(row_count , vector<int>(column_count , initialization_value)); 

कोड बार-बार आयाम बदल रहा है और मैट्रिक्स कभी कभी से पहले फिर से आकार देने वाला स्पष्ट मैट्रिक्स के पुराने राज्य (2 डी वेक्टर) तो भी घट रहा है, तो:

myVector.resize(n); 
for (int i = 0; i < n; ++i) 
    myVector[i].resize(m); 
+0

ठीक है तो एन चौड़ाई है और मीटर ऊंचाई है? और फिर क्या मैं सिर्फ लूप के लिए एक डबल कर सकता हूं और वेक्टर में ऑब्जेक्ट पुश कर सकता हूं? – Habit

+0

@ जस्टिन मैं यह नहीं मानना ​​चाहता था कि कौन सा चौड़ाई बनाम ऊंचाई थी क्योंकि यह पूरी तरह से आपके ऊपर है और आपके कार्यक्रम में किए गए अनुमान हैं। यदि आप आकार बदलने के बजाय पुश करना चाहते हैं, लेकिन आपको तत्वों की सही संख्या को धक्का देना सुनिश्चित करना है - यह नए बाहरी लोगों पर बड़ा होगा। –

+0

आह ठीक है। तो टाइल ऑब्जेक्ट्स को दबाए रखने के बजाय, मैं आकार बदलते समय इसे भर सकता हूं? – Habit

3

हम यह भी एक पंक्ति कोड का उपयोग कर सकते

matrix.clear(); 
matrix.resize(row_count , vector<int>(column_count , initialization_value)); 

// we can create a 2D integer vector with 3 rows and 5 columns having "-1" as initial value by: 
matrix.clear(); 
matrix.resize(3, vector<int> (5,-1)); 
2

आपको 2 आयामी वेक्टर (मैट्रिक्स) का आकार बदलने के लिए लूप की आवश्यकता नहीं है। आप बस निम्नलिखित पंक्ति का आकार बदल सकते हैं() कॉल:

//vector<vector<int>> M; 
//int n = number of rows, m = number of columns; 
M.resize(n, vector<int>(m)); 

आशा है कि मदद करता है!

संबंधित मुद्दे