Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / map::operator[] как инициализирует структуру? / 5 сообщений из 5, страница 1 из 1
08.09.2014, 10:49
    #38740257
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
map::operator[] как инициализирует структуру?
Нигде явно не нашел ответа, засомневался.
Имеем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
typedef struct {
	int a;
	int b;
} value_t;
typedef std::map<int, value_t> mymap_t;
mymap_t myarr;

value_t* v = &myarr[5];
printf("a=%d b=%d\n", v->a, v->b);


Вопрос как должен проинициализироваться новый элемент по стандарту?

Потестил, у меня всегда нули в v->a и v->b. Это так и должно быть или только особенность моего компилятора?

Нолики меня устроят. Просто хочу быть уверен что всегда будут нолики, а не мусор из памяти.

В хэлпе пишут что новый объект инициализируется конструктором по умолчанию, а со структурами неясно.
...
Рейтинг: 0 / 0
08.09.2014, 13:20
    #38740465
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
map::operator[] как инициализирует структуру?
Dima TВ хэлпе пишут что новый объект инициализируется конструктором по умолчанию, а со структурами неясно.
Структуры - это тоже классы. И у них тоже есть конструкторы по умолчанию )
...
Рейтинг: 0 / 0
08.09.2014, 13:24
    #38740474
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
map::operator[] как инициализирует структуру?
Anatoly MoskovskyСтруктуры - это тоже классы. И у них тоже есть конструкторы по умолчанию )
И ... ? Конструктор нулями инициализирует?
...
Рейтинг: 0 / 0
08.09.2014, 15:00
    #38740623
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
map::operator[] как инициализирует структуру?
Dima T,

В контейнерах, где они явно вызываются (как в данном случае) - да.
Грубо говоря, если пишут что "инициализируется конструктором по умолчанию" то значит где-то внутри контейнера есть код:
Код: plaintext
1.
T val = T();


Для структур с конструктором будет вызван конструктор. Для структур без явного конструктора он будет сгенерирован и вызовет для полей их конструкторы по умолчанию (что для int равно инициализации нулями).
...
Рейтинг: 0 / 0
08.09.2014, 15:20
    #38740658
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
map::operator[] как инициализирует структуру?
У меня int`ы в структуре. Значит гарантированно будут нули в данном случае.
Спасибо за ликбез.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / map::operator[] как инициализирует структуру? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]