C ++ std :: map Инициализация внутреннего типа с помощью оператора [] - PullRequest
2 голосов
/ 05 августа 2011

Какой заголовок, предположим, у меня есть такая карта:

std::map<int, int> m;

, и если я напишу следующее

cout<<m[4];
  • Каков будет результат (0,неинициализирован, зависит от компилятора)?
  • Применимо ли это к указателям (т. Е. Std :: map)?

РЕДАКТИРОВАТЬ:
Чтобы уточнить, в этом вопросе я ищустандартное поведение.

Заранее спасибо, Cem

1 Ответ

3 голосов
/ 05 августа 2011

Значение будет тем, что создает конструктор по умолчанию для типа, потому что новые места заполнены с использованием T(). Для int это 0. Вы можете убедиться в этом сами:

#include <iostream>

using namespace std;

int main() {
    cout << int() << endl; // prints 0
}

Инициализация типа с пустыми скобками, подобного этой, называется Инициализация значения (см. Комментарий ildjarn ниже).

...