Конструиране на асоциативни контейнери

Бях убеден (докато не го опитах преди малко), че е възможно да се инстанцира асоциативен контейнер с нотация в стил масив.

Например,

std::set< int > _set = { 2, 3, 5 };

Това не е така, но се чудя дали има някакъв друг начин за масово инициализиране на контейнер в конструктора като този?


person Konrad    schedule 22.10.2010    source източник
comment
Това трябва да е възможно в C++0x. Тъй като езикът е в момента, не можете да инициализирате контейнер с този синтаксис.   -  person visitor    schedule 22.10.2010
comment
std::set наистина ли е асоциативен контейнер?   -  person fredoverflow    schedule 22.10.2010
comment
@FredOverflow: Според sgi документацията това е сортиран асоциативен контейнер.   -  person Björn Pollex    schedule 22.10.2010
comment
@FredOverflow: какво е вашето съмнение?   -  person Arun    schedule 22.10.2010
comment
@Arun: Винаги съм смятал, че асоциативният контейнер осигурява преобразуване от ключове към елементи, като std::map<K, V> (всеки ключ е свързан със своята стойност).   -  person fredoverflow    schedule 22.10.2010
comment
@Fred: Сега разбирам. Очаквахте някаква връзка между две стойности. В стандартната библиотека на C++ (и първоначално STL), map, multimap, set, multiset се наричат ​​асоциативни контейнери.   -  person Arun    schedule 22.10.2010


Отговори (2)


Можете да използвате Boost.Assign.

std::set< int > _set = boost::assign::list_of(2)(3)(5);
person Björn Pollex    schedule 22.10.2010

Бихте могли да направите:

const int x[] = { 2, 3, 5 };
std::set<int> _set(&x[0], &x[sizeof(x)/sizeof(x[0])]);

!

person Oliver Charlesworth    schedule 22.10.2010