Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос по std::map - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Готовый проекты в Visual Studio на С++ http://www.cyberforum.ru/cpp/thread126963.html
Здравствуйте. Я ищу готовые проекты visual studio на с++. Нужны они мне для метрического анализа для диплома. Несколько открытых программ я нашел на SF.net, но они там попадаются очень редко....
C++ Нужно разобраться со стеком Доброго времени суток... Помогите, пожалуйста, разобраться со стеком. Задание следующие : "написать программу для перестановки элементов стека x(1),x(2),x(3),...x(n)=>x(2),x(3),...x(n),x(1).... http://www.cyberforum.ru/cpp/thread126786.html
C++ Создание нескольких объектов приводит к ошибке
for(int i=1,j=0;i<22;i++) for(j=1;j<32;j++) switch (MCard){ case 0:{ TNight *Night = new TNight; // создав 5 объектов...
C++ О "нестабильности" или "переполнении" цикла foreach
Здравствуйте, коллеги. Недавно коллега-программист сообщил мне страшную вещь: оказывается, что цикл foreach может переполниться при большом объеме (50000) обрабатываемых записей (в результате часть...
C++ Расчет системных требований http://www.cyberforum.ru/cpp/thread125759.html
Есть консольное приложение, подскажите, пожалуйста, как расчитать для него минимальные системные требования? Монитор, клава это понятно, а вот всё остальное... Добавлено через 4 часа 38 минут Ау!...
C++ Пакеты для проектирования БИС? Я слышал, что С++ используется для проектирования БИС. Кто-нибудь знает, какие библиотеки/пакеты для этого используются? подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17944 / 6175 / 411
Регистрация: 30.03.2009
Сообщений: 16,952
Записей в блоге: 27

Вопрос по std::map - C++

08.05.2010, 20:13. Просмотров 7161. Ответов 27
Метки (Все метки)

В качестве хэш-таблицы для строк (AnsiString) я использовал std::map. От таблицы мне нужно было ещё и такое свойство: я хотел иметь информацию о том, присутсвует данный ключ в таблице или нет. В описании std::map сказано, что оператор [] ВСЕГДА создаёт элемент в таблице. В случае со String'ами такой проблемы как таковой не было, потому как даже если элемент создаётся в таблице, то он создаётся через Default'ный конструктор. Далее я беру элемент таблицы map[key] и проверяю, пустая там строка или нет.

Теперь мне нужно такое же свойство для bool (элементы таблицы являются Bool'ами). Эмпирически выглядит так, что для элемента, который я в таблицу не записывал, чтение всегда возвращает false. Но у меня нет уверенности, что сие будет так всегда. std::map - это всё-таки шаблон, а потому со всеми типами он работает одинаково и создание новой записи в таблице - это создание нового объекта через defeult'ный конструктор, который для базовых типов ничего делать не должен (т.е. элемент должен остаться неинициализированным). Техническая реализация может выглядеть таким образом, что перед созданием нового экземпляра класса в таблице память под него забивается нулями и только потом дергается new с указанием того, что объект нужно создать не абы где, а именно в этом участке памяти. Тогда для всех базовых типов реально всё по умолчанию будет обнулено

А что по этому поводу говорит стандарт? Просто я в Си++ как-то не силён

Добавлено через 1 минуту
Вариант-затычку, что вместо bool я могу сделать string и по факту, инициализирована строка или нет, трактовать это как true или False, не предлагать, ибо я сам пока могу до этого додуматься
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru