एक वेक्टर को zeros C ++ / C ++ 11 से प्रारंभ करें


118

मुझे पता है कि C ++ 11 में उन्होंने एक वैरिएबल को शून्य के रूप में इनिशियलाइज़ करने के लिए फीचर को जोड़ा

double number = {}; // number = 0
int data{};  // data = 0

क्या इनिशियलाइज़ करने का एक समान तरीका है std::vector सभी शून्य के लिए एक निश्चित लंबाई को ?


13
std::vector<int> vec(42);
अवकर

9
btw, यह c ++ 11 में नया नहीं है, आप पिछले संस्करणों में भी ऐसा कर सकते हैं
balki

जवाबों:


220

आपको इसके लिए आरंभीकरण सूचियों की आवश्यकता नहीं है:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
आपको स्पष्ट रूप से 0 करने की आवश्यकता नहीं है? बस vector(length)काम करना चाहिए?
बजे डैनियल ग्रैज़र

38
@jozefg: हां, यह काम करेगा, हालांकि आप क्या करना चाहते हैं, इसके बारे में स्पष्ट होने में कोई बुराई नहीं है।
रोनाग

1
@ एरनाग आई ने अपना जवाब लिखा क्योंकि इस मामले में स्पष्ट होने के लिए जरूरी नहीं कि अगर वह जिस प्रकार के साथ काम कर रहा है वह एक अच्छा उदाहरण नहीं है। gereral प्रोग्रामिंग c ++ में उपलब्ध है, लेकिन जब मुझे याद दिलाया गया कि आप तर्क को पूरी तरह से छोड़ सकते हैं, तो मैंने अपना उत्तर हटा दिया।
जोहान्स शाउब -

1
एक वेक्टर को स्वचालित रूप से 0 तक आरंभीकृत किया जाता है, जब तक कि आप घोषणा में कुछ अन्य मूल्य निर्दिष्ट नहीं करते हैं, जैसे रोनग दिखाया गया है।
निकोस

ZEROलूप के लिए उपयोग किए बिना कुशलता से ग्लोबल वेक्टर के सभी तत्व को फिर से शुरू करना संभव है ??????
अंकित मिश्रा

0

एक सदिश संरचना, वर्ग या संघ की शुरुआत इस तरह से की जा सकती है

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.