2011-09-22 43 views
9

हाय का एक वेक्टर मैं एक आकार 9 वेक्टर जिसका तत्वों आकार के वैक्टर हैं प्रारंभ करना चाहते हैं आरंभ का कहना है 5. मैं शून्य वेक्टर के सभी तत्वों को प्रारंभ करना चाहते हैं।वेक्टर <doubles> C++

इस तरह से सही है?

vector<double> z(5,0); 

vector< vector<double> > diff(9, z); 

या ऐसा करने का एक छोटा रास्ता है?

+1

एक 2D वेक्टर बनाने के लिए सही तरीका है कि। आप बस थोड़ा और अधिक verbose होने जा रहे हैं। –

+2

क्या यह 9x5 आकार तय है? –

+0

हां मैं हाथ से पहले आकार जानता हूँ। इस प्रश्न के लिए बस कुछ यादृच्छिक इनट्स बनने के लिए 9 और 5 का चयन करें। – smilingbuddha

उत्तर

12

आप संभवतः एक पंक्ति में ऐसा कर सकता है:

vector<vector<double> > diff(9, vector<double>(5)); 

तुम भी अधिक कुशल भंडारण और उपयोग करने के लिए boost::multi_array उपयोग करने पर विचार करना चाह सकते हैं (यह डबल सूचक अविवेक से बचा जाता है)।

+1

वैकल्पिक रूप से, strided उपयोग के साथ 45 तत्वों का एक वेक्टर के रूप में अच्छी तरह से पर्याप्त हो सकता है ... –

+2

'वेक्टर (5)' पर्याप्त होता। 'वेक्टर (5, 0)' की आवश्यकता नहीं है, जब तक कि दूसरा तर्क '0' है। – Nawaz

4

सुंदर यकीन है कि यह काम करेगा:

vector< vector<double> > diff(9, vector<double>(5,0)); 
5

आप यह सब एक पंक्ति में रख सकते हैं:

vector<vector<double>> diff(9, vector<double>(5)); 

यह प्रयोग न की जा चर बचा जाता है।

(पूर्व सी ++ 11 compilers में आप एक स्थान छोड़ना > > की जरूरत है।)

+0

आपके वाक्यविन्यास में '>>' की सावधानी बरतें। कुछ कंपाइलरों को उन प्रतीकों के बीच एक जगह की आवश्यकता होती है। – riwalk

+3

@ Stargazer712 उन कंपाइलर्स अब अनुरूप नहीं हैं! : पी –

+2

@ R.MartinhoFernandes, अनुरूप है या नहीं, वे मौजूद :) @ R.Martinho फर्नांडीस – riwalk

5

vector< vector<double> > diff(9, std::vector<double>(5, 0));

हालांकि विशिष्ट मामले में

जहां आकार संकलन समय पर जाना जाता है आप सकता है उपयोग एक सी सरणी:

double diff[9][5] = { { 0 } };

4

आकार निर्धारित किया जाता है, तो आप std::array बजाय साथ जा सकते हैं:

std::array<std::array<double,5>,9> diff = {}; 
+1

यह भी विस्तार की परिमाण पर निर्भर करता है। 'std :: array' स्थानीय दायरे में सब कुछ रखता है, इसलिए यदि वह सरणी बहुत बड़ी है, तो आप कुछ त्रुटि ट्रिगर कर सकते हैं जिसका नाम मुझसे बच निकला है। –

+0

ढेर ओवरफ्लो? –

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