2010-05-17 19 views
6

Yeni 0X standardını kullanarak <ints, vector<ints> > bir haritayı başlatmaya çalışıyorum ama sözdizimini doğru olarak göremiyorum. = Değer 1: Ben anahtar ile tek girişle bir harita yapmak istiyorum < 3,4>Vektörlerin haritası üzerinde bir initializer_list kullanma

Bu gcc 4.4.3 kullanarak aşağıdaki hata ile ölür
#include <initializer_list> 
#include <map> 
#include <vector> 
using namespace std; 

map<int, vector<int> > A = {1,{3,4}}; 

.... 

:

error: no matching function for call to std::map<int,std::vector<int,std::allocator<int> >,std::less<int>,std::allocator<std::pair<const int,std::vector<int,std::allocator<int> > > > >::map(<brace-enclosed initializer list>)

Düzenleme

Cogwheel öneriyi takiben ve şimdi -fno-anlamak-init-liste bayrağını kullanarak kurtulmak kazanılmış olabilir bir uyarı ile derler ekstra ayracı ekledi. Bunu yaparken herhangi bir tehlike var mı?

+0

Bir ayraç eksik değil misiniz? – YGL

+0

@ YGL - sabit teşekkür ederiz. Yine de orijinal problemi çözmüyor. – Hooked

+0

4.4.1'de derleyici bir sinir bozukluğu (iç hata) geçirir. Belki 4.5 ile düzgün çalışıyor? – ergosys

cevap

1

Yukarıdaki yorumda belirtildiği gibi, {1,{3,4}}, anahtarın 1 olduğu ve değerin {3,4} olduğu haritada tek bir öğedir. Yani, ihtiyacınız olan şey { {1,{3,4}} }.

hatayı Basitleştirme:

error: no matching function for call to map<int,vector<int>>::map(<brace-enclosed initializer list>) 

Değil kesin hata, ama yine de biraz yararlı.

İlgili konular