2010-11-30 20 views
6

आकार बदलने के लिए कैसे इस तरह के रूप बहुआयामी वेक्टर आकार बदलने के लिए:बहुआयामी वेक्टर

vector <vector <vector <custom_type> > > array; 

उदाहरण के लिए, मैं सरणी की जरूरत है [3] [5] [10]?

उत्तर

4

आपको सभी नेस्टेड vector एस एक का आकार बदलना चाहिए। नेस्टेड for लूप या रिकर्सन का प्रयोग करें।

+2

ठीक है, इस तरह के रूप में देखते हैं m_elements पहुँचा जा करने की जरूरत है नहीं होगा .resize (3); (int i = 0; i <3; i ++) { सरणी [i] .resize (5); (int j = 0; j <5; j ++) { सरणी [i] [j] .resize (10); } } – qutron

+0

@qutron: हाँ ... उस के रूप में सरल। :-) –

+0

आपको इसे एक-एक करके करने की आवश्यकता नहीं है। मेरा जवाब देखें – Matt

4

मैंने किया))

array.resize(3); 
for (int i = 0; i < 3; i++) 
{ 
    array[i].resize(5); 
    for (int j = 0; j < 5; j++) 
    { 
     array[i][j].resize(10); 
    } 
} 
+1

या 'वेक्टर <वेक्टर <वेक्टर >> सरणी (3, वेक्टर <वेक्टर > (5, वेक्टर (10)); ' –

2

मैं (की ... वैक्टर आयाम प्रति का एक वेक्टर युक्त एक कस्टम कंटेनर) बनाने के लिए और आयाम प्रति आकार-कार्यों के साथ आकार परिवर्तन होगा। इस तरह आप एक ही स्थान पर प्रति आयाम के बराबर आकार का आविष्कार डाल सकते हैं। वास्तविक आकार बदलने के बाद आयाम के अनुसार एक लूप में किया जा सकता है।
को सार्वजनिक करने में शामिल काम का एक सा क्या (ऑपरेटर [], ...)

5

भी Boost.MultiArray

Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface.

8
array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10))); 
+0

स्पष्टीकरण की आवश्यकता है: यहां वास्तव में 3,5 और 10 क्या हैं ?? क्या आप एक वीसी [5] [10] vec [3] [10] करने के लिए फिर से आकार बदल रहे हैं ?? – aniliitb10

+0

@ aniliitb10 नहीं; ओपी ने यह उदाहरण दिया है (कृपया प्रश्न की समीक्षा करें)। 'सरणी' पहले से ही 3-आयामी है। यह इसे 3x5x10 पर पहले से जो भी पहले से बदलता है, इसका आकार बदलता है। – Matt

+0

ओह! मेरी गलती! – aniliitb10

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