Разница между двумя способами вставить в карту - PullRequest
4 голосов
/ 19 апреля 2011

Меня попросили два способа вставить запись на карту,

mymap["foo"] = 123;

mymap.insert("foo", 123);

Так есть ли разница между этими двумя, кроме синтаксиса?

Ответы [ 2 ]

8 голосов
/ 19 апреля 2011

Существует, первая опция через [] перезапишет значение, сохраненное с ключом "foo", если ключ "foo" существует, тогда как insert не сможет вставить данные, если ключ уже существует, и будет указывать на успех или ошибка в его возвращаемом значении.

7 голосов
/ 19 апреля 2011

В дополнение к превосходному ответу Тимо -

Если не существует элемента в "foo", первый будет сначала конструировать значение по умолчанию в месте "foo", ТОГДА используя ссылку на построенный по умолчанию "значение foo, присвойте этому месту значение 123.

Просто выполнение

mymap["foo"]

приведет к тому, что значение будет сконструировано по умолчанию и помещено в местоположение "foo".Так что будьте осторожны при выполнении

int value = mymap["foo"]

, потому что это сработает, , даже если вы никогда не назначали явно или вставляли в foo

...