2012-04-19 7 views
23

क्या मैं प्रारंभिक सूची में एक ही पूर्णांक के 10 के साथ एक एसटीएल वेक्टर शुरू कर सकता हूं? मेरे प्रयासों ने अब तक मुझे असफल कर दिया है।क्या मैं प्रारंभिक सूची में एक ही पूर्णांक के 10 के साथ एक एसटीएल वेक्टर शुरू कर सकता हूं?

+6

साथ संकलित हैं वहाँ एक [ 'std :: वेक्टर <>' निर्माता] (http://en.cppreference.com/w/cpp/container/vector/vector) (2 है) वह करता है; आप एक प्रारंभकर्ता सूची क्यों चाहते हैं? – ildjarn

+1

@ildjarn: मुझे लगता है कि वह एक कन्स्ट्रक्टर प्रारंभिक सूची में है, और कन्स्ट्रक्टर बॉडी में नहीं। – GManNickG

+0

@GManNickG: यह मेरे जैसा नहीं लगता है। ओपी एक वेक्टर को प्रारंभ करने के लिए एक तरीका मांगता है जिसमें एक्स संख्याओं के साथ सभी समान मूल्यों पर सेट होते हैं। हां, वह एक प्रारंभिक सूची का जिक्र करता है, लेकिन देख रहा है क्योंकि पहले से ही एक कन्स्ट्रक्टर है जो * आवश्यकता * को पूरा करता है जो –

उत्तर

25

मुझे लगता है कि आप इस मतलब है:

struct test { 
    std::vector<int> v; 
    test(int value) : v(100, value) {} 
}; 
+5

यह कोड-केवल उत्तर खराब दस्तावेज और आवश्यक से अधिक जटिल है। नीचे एड एस का जवाब देखें। – Blake

+5

@ Cokemonkey11: यह उत्तर * नहीं * दस्तावेज है, आप अपने पसंदीदा संदर्भ में दस्तावेज पा सकते हैं (मेरा cppreference) है। यह कक्षा के बिना आवश्यक नहीं * अधिक जटिल है और कन्स्ट्रक्टर एड एस का उत्तर प्रारंभकर्ता सूची * में एक वेक्टर * प्रारंभ नहीं करता है, जो प्रश्न का हिस्सा है। इस मामले के लिए इससे कोई फर्क नहीं पड़ता, लेकिन विचार करें कि सवाल स्याही की एक श्रृंखला के बारे में था, ढेर में प्रारंभिकता और प्रारंभकर्ता सूची के हिस्से के रूप में अलग हैं। –

0

आप पोस्ट कर सकते हैं कि आप क्या

int i = 100; 
vector<int> vInts2 (10, i); 

vector<int>::iterator iter; 
for(iter = vInts2.begin(); iter != vInts2.end(); ++iter) 
{ 
    cout << " i " << (*iter) << endl; 
} 
4

कर रहे हैं आप सी ++ 11 और जीसीसी पर प्रयोग कर रहे हैं, तो आप ऐसा कर सकते हैं:

vector<int> myVec() {[0 ... 99] = 1}; 

यह कहा जाता है आरंभीकरण लेकर और एक है जीसीसी-केवल विस्तार।

+1

वाह, मैंने कभी इसके बारे में कभी नहीं सुना है। बेशक, सही कन्स्ट्रक्टर का उपयोग करना बेहतर है। – chris

+1

हाँ। लेकिन यह सरणी और structs के लिए आसान आता है। वैसे भी, जीसीसी में एक्सटेंशन का एक समूह है जो पागल चीजें करता है। मानक सी ++ के लिए सर्वश्रेष्ठ छड़ी। –

+0

"नामित प्रारंभकर्ता" एक्सटेंशन केवल सी कोड के लिए उपलब्ध है, सी ++ नहीं। उपलब्ध जीसीसी एक्सटेंशन की सूची के लिए https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html#C- एक्सटेंशन और https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b- एक्सटेंशन देखें .html # C_002b_002b-एक्सटेंशन –

2

आपको लगता है कि std::vector निर्माता के साथ क्या कर सकते हैं:

vector(size_type count, 
       const T& value, 
       const Allocator& alloc = Allocator()); 

कौन सा count लेता है और value दोहराया जाना।

आप प्रारंभकर्ता सूचियों का उपयोग करना चाहते हैं तो आप लिख सकते हैं:

const int x = 5; 
std::vector<int> vec {x, x, x, x, x, x, x, x, x, x}; 
81

उपयोग उचित निर्माता है, जो एक आकार और एक डिफ़ॉल्ट मान लेता है।

int number_of_elements = 10; 
int default_value = 1; 
std::vector<int> vec(number_of_elements, default_value); 
2

वेक्टर के लिए प्रारंभ सूची C++ 0x से समर्थित है। आप सी ++ 98

int number_of_elements = 10; 
int default_value = 1; 
std::vector<int> vec(number_of_elements, default_value); 
संबंधित मुद्दे