2012-10-02 12 views
8

क्या सी ++ में इसका मूल्य प्रारंभ करने के लिए एक फ्लोट सरणी बनाने का कोई तरीका है?निर्माण पर एक फ्लोट सरणी शुरू करें

उदाहरण के लिए, मैं करता हूँ:

float* new_arr = new float[dimension]; 
for(unsigned int i = 0; i < dimension; ++i) new_arr[i] = 0; 

यह contruction दौरान काम करने के लिए संभव है?

उत्तर

18
float* new_arr = new float[dimension](); 
+1

और के साथ एक समान प्रारंभ: यदि आप एक std::vector<float> बजाय इस्तेमाल कर सकते हैं स्पष्ट रूप से new[] उपयोग करने के बजाय

float* new_arr = new float[dimension](); 

(सी ++ 11) आप 'नई फ्लोट [आयाम] {} 'कर सकते हैं या यहां तक ​​कि मूल्य भी दे सकते हैं:' नया फ्लोट [आयाम] {1.f, .5f, 1.3f}'। – bames53

+0

यदि आप सी ++ 11 का उपयोग नहीं कर रहे हैं और इसे करना चाहते हैं, तो आप संभवतः एक स्थैतिक कॉन्स सरणी घोषित कर सकते हैं जहां आप प्रारंभिक मान संग्रहीत करते हैं, और इसे अपने नए आवंटित सरणी पर याद करते हैं। – Wug

+0

@Wug not 'memcpy', 'std :: copy' –

8

इस विशेष मामले में (सभी शून्यों) आप मूल्य आरंभीकरण उपयोग कर सकते हैं:

std::vector<float> new_vec(dimension, 0); 
+0

मैं वेक्टर टेम्पलेट का उपयोग करने के लिए स्वतंत्र नहीं हूं क्योंकि मैं कुछ बाहरी lib का उपयोग कर रहा हूं। धन्यवाद। – Aslan986

+4

@ Aslan986: यदि समस्या कुछ कार्य निष्पादन 'float *' है, तो बस '& v [0] 'पास करें। एक 'std :: vector' ने संगत बफर की गारंटी दी है। इसलिए जब तक कि आप पुस्तकालय की तरह नहीं हैं, कस्टम रनटाइम के साथ ग्राफिक्स कार्ड पर बहु-प्रोसेसिंग, फिर बस 'std :: vector' का उपयोग करें। 'Std :: vector' के बारे में सलाह के लिए –

+0

+1। –

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