Асоциативен контейнер - изключение, а не конструкция по подразбиране в C++

Търся асоциативен контейнер в C++, където вместо да изисква елементите му да бъдат конструктивни по подразбиране, ще хвърли изключение, когато е поискан ключ, който не е намерен - редактиране: в подходящите функции, очевидно не всички изискват конструкция по подразбиране. Това е основно, защото заменям стандартния разпределител с такъв, който се обажда вкъщи и казва на главния обект колко памет е разпределена и следователно трябва да знае къде е „домът“.


person Puppy    schedule 26.11.2010    source източник
comment
Бихте ли могли да обвиете типа стойност в друг тип, който (a) конструира от основния тип, (b) преобразува в основния тип, (c) хвърля изключение в своя конструктор без аргументи? Наистина не съм го обмислял.   -  person Steve Jessop    schedule 26.11.2010


Отговори (2)


Най-простият отговор за std::map е да не се използва operator[]. Използвайте insert, за да създадете нови елементи и find, за да намерите съществуващ елемент. Ако не използвате operator[], не е необходимо съдържащият се тип да бъде конструктивн по подразбиране и можете да решите да хвърлите и изключение, ако find не намери обекта.

person David Rodríguez - dribeas    schedule 26.11.2010