Что значит freq_table [field_pm_value] = map();означает? - PullRequest
0 голосов
/ 19 октября 2019

Я прохожу некоторый код и не могу разобраться с синтаксисом ниже:

freq_table[field_pm_value] = map<string, int>();

Я запутался, что здесь происходит "map string, int ()". freq_table имеет тип

map<string, map<string, int> >& freq_table 

Полный код https://github.com/vishalsingh8989/Star-Cubing-Algorithm/blob/master/src/csvreader.cpp

спасибо

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Карта

Карты - это ассоциативные контейнеры, в которых хранятся элементы, образованные комбинацией значения ключа и сопоставленного значения в соответствии с определенным порядком.

Эта структура похожа на: В доме у вас есть разные комнаты, представляющие ваш «контейнер для внешней карты» map<string, map<string, int> >& freq_table, и в каждой комнате у вас есть уникальная мебель и количество их. Эта мебель определена на «внутренней карте».

Поскольку std::map имеет уникальные ключи, у вас не может быть 2 спальни в вашем доме и не может быть 2 кровати в одной комнате.

В вашем случае вы проверяете, есть ли в вашей «комнате» мебель, в противном случае вы строите пустую «комнату».

Я сожалею о неловкой аналогии, хотя надеюсь, что она может помочь.

1 голос
/ 19 октября 2019
freq_table[field_pm_value] = map<string, int>();

Это создает новый пустой map из string до int, а затем копирует его в запись freq_table для field_pm_value

Еслиfreq_table не имеет записи для field_pm_value, для нее создается новая запись.

...