2012-03-05 26 views
8

मैं और कोड :: ब्लाकों में मानों MinGW संकलक के साथ निम्न वेक्टर आरंभीकरण उपयोग किया गया है:C++ वेक्टर प्रारंभ

vector<int> v0 {1,2,3,4}; 

उसके बाद मैं एक दृश्य स्टूडियो परियोजना (C++) के लिए कोड को स्थानांतरित करने के लिए किया था और मैं बनाने की कोशिश की।
स्थानीय कार्यशील परिभाषाएँ अवैध

दृश्य स्टूडियो संकलक प्रारंभ इस तरह का समर्थन नहीं करता हैं: मैं निम्न त्रुटि मिल गया?
इसे संगत बनाने के लिए मुझे कोड को बदलने की आवश्यकता कैसे है?
मैं वेक्टर शुरू करना चाहता हूं और एक ही समय में वैल्यू के साथ इसे भरना चाहता हूं।

+8

इस वाक्य रचना नया है सी ++ 11 के लिए, और अभी तक विज़ुअल सी में समर्थित नहीं ++। – ildjarn

+2

यह वाक्यविन्यास अब वीएस 2013 में समर्थित है। स्रोत: [विजुअल स्टूडियो 2013 में विजुअल सी ++ के लिए नया क्या है] (https://msdn.microsoft.com/en-us/library/vstudio/hh409293.aspx) –

उत्तर

15

विज़ुअल सी ++ अभी तक प्रारंभकर्ता सूचियों का समर्थन नहीं करता है।

std::array<int, 4> v0_init = { 1, 2, 3, 4 }; 
std::vector<int> v0(v0_init.begin(), v0_init.end()); 
1

एक अन्य विकल्प boost::assign है:

#include <boost/assign.hpp> 


using namespace boost::assign; 
vector<int> v; 
v += 1,2,3,4; 
4

आप लगभग कर सकते हैं

निकटतम आप इस वाक्य रचना करने के लिए प्राप्त कर सकते हैं

एक सरणी का उपयोग करने के धारण करने के लिए प्रारंभकर्ता फिर श्रेणी निर्माता का उपयोग करें कि वीएस2013

vector<int> v0{ { 1, 2, 3, 4 } }; 

पूर्ण उदाहरण

#include <vector> 
#include <iostream> 
int main() 
{  
    using namespace std; 
    vector<int> v0{ { 1, 2, 3, 4 } }; 
    for (auto& v : v0){ 
     cout << " " << v; 
    } 
    cout << endl; 
    return 0; 
} 
-2

आप Visual Studio 2015 उपयोग कर रहे हैं, जिस तरह से एक vector का उपयोग कर एक list है प्रारंभ करने में:

vector<int> v = {3, (1,2,3)}; 

तो, पहले पैरामीटर (3) आकार को निर्दिष्ट करता है और सूची दूसरा पैरामीटर है।

#define init_vector(type, name, ...)\ 
    const type _init_vector_##name[] { __VA_ARGS__ };\ 
    vector<type> name(_init_vector_##name, _init_vector_##name + _countof(_init_vector_##name)) 

और इस तरह का उपयोग करें::

+0

मैंने आपकी कोशिश की रास्ता, लेकिन सभी तत्वों का अंतिम मूल्य है। – yane

0

मैं किसी मैक्रो को परिभाषित किया है

init_vector(string, spell, "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"); 

for(auto &a : spell) 
    std::cout<< a <<" "; 
संबंधित मुद्दे