2017-06-26 1 views
1

Je veux initialiser le 2 D vecteur avec des valeurs, il me donne cette erreur:ne peux pas énumérer vecteur initialize avec Microsoft Visual Studio 2012

IntelliSense: initialization with '{...}' is not allowed for object of type "std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>" 

Que dois-je obtenir l'erreur ci-dessus lorsque vous utilisez ce qui suit?

vector<vector<int>> A = 
    { { 0, 0, 0, 0, 0, 0 }, 
     { 0, 1, 2, 2, 4, 1 }, 
     { 0, 3, 4, 1, 5, 2 }, 
     { 0, 2, 3, 3, 2, 4 }, 
     { 0, 4, 1, 5, 4, 6 }, 
     { 0, 6, 3, 2, 1, 3 } }; 
+0

Note: IntelliSense n'est * pas * le compilateur. –

+2

Compile avec le support de C++ 11 ou supérieur. – DeiDei

+0

[Fonctionne très bien ici] (http://ideone.com/w6ySy3), avez-vous manqué le qualificatif d'espace de noms 'std ::'? –

Répondre

5

MSVS 2012 has very little C++11 support Si nous regardons le MSDN lié à l'article

enter image description here

nous verrons qu'il ne supporte pas les listes d'initialisation qui est nécessaire à l'initialisation que vous utilisez.

Mon conseil est de mettre à jour votre compilateur si vous le pouvez. MSVS 2017 a le support C++ 11 le plus complet (sauf les changements de rupture dans les normes les plus récentes). Si vous ne pouvez pas le faire, vous pouvez utiliser la solution pré-C++ 11 pour déclarer des tableaux temporaires et initialiser le vecteur à partir des tableaux temporaires.

+0

@ user4581301 Oui. Fixé – NathanOliver