Ассоциативный контейнер - исключение, а не конструкция по умолчанию в C ++ - PullRequest
2 голосов
/ 26 ноября 2010

Я ищу ассоциативный контейнер в C ++, где вместо того, чтобы требовать, чтобы его элементы конструировались по умолчанию, будет выброшено исключение, когда запрашивается ключ, который не найден - edit: в соответствующих функциях, очевидно, нетвсе они требуют default-construction.Это в основном потому, что я заменяю стандартный распределитель на тот, который звонит домой и сообщает главному объекту, сколько памяти выделяется, и, следовательно, должен знать, где находится «дом».

Ответы [ 2 ]

2 голосов
/ 26 ноября 2010

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

1 голос
/ 26 ноября 2010

Вы ищете at участников из boost::unordered_map?Это не в std::tr1::unordered_map, AFAICT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...