Intereting Posts
Что означает «typename Enable = void»? Проблемы с внедрением многопоточного UDP-сервера (threadpool?) синтаксический анализатор для заголовков c ++ для извлечения функций со стандартными средствами linux? JavaScript большое целое от строки до базы 2 c ++: проблема открытия ifstream с передачей строки для имени текстового файла Написание динамических свойств в файл с помощью библиотеки Boost Graph Необычная проблема при заполнении списка объектами в C ++? Что такое расширение C ++ 11 Как вернуть 2d массив указателей в c ++ Параметр шаблона по умолчанию для более позднего Может ли конструктор перемещения быть неявным? В C / C ++, char * arrayName указатель на указатель на указатель ИЛИ указатель на указатель? Возможно ли инициализировать массив символов условно выбранным строковым литералом? Delphi CopyMemory vs C ++ memcpy Ошибка повторного использования переменной цикла for в цикле

Как получить доступ к элементам C ++-карты из указателя?

Простой вопрос, но трудно сформулировать для поисковой системы: если я создаю указатель на объект карты, как мне получить доступ и установить его элементы? Следующий код не работает.

map *myFruit; myFruit["apple"] = 1; myFruit["pear"] = 2; 

Вы можете сделать это:

 (*myFruit)["apple"] = 1; 

или же

 myFruit->operator[]("apple") = 1; 

или же

 map &tFruit = *myFruit; tFruit["apple"] = 1; 

myFruit – это указатель на карту. Если вы удалите звездочку, то у вас будет карта, и следующий синтаксис будет работать.

В качестве альтернативы вы можете использовать оператор разыменования ( * ) для доступа к карте с помощью указателя, но сначала вам нужно создать свою карту:

 map* myFruit = new map() ; 
 map *myFruit; (*myFruit)["apple"] = 1; (*myFruit)["pear"] = 2; 

будет работать, если вам нужно сохранить его как указатель.