Тип данных хранилища недостаточен для хранения всей информации, которую вы хотите сообщить. Вы могли бы добиться этого, используя вектор для хранения счетчиков, но вам пришлось бы много заниматься бухгалтерским учетом, чтобы убедиться, что вы фактически вставляете 0, когда слово не встречается, и создаете вектор с правильным размером, когда новое слово встречается. Нетривиальная задача.
Вы можете переключить свою часть подсчета на карту чисел, сначала это строка, а вторая счет ... Это уменьшит сложность вашего кода, но точно не будет самым эффективным методом.
В любом случае, вы не можете делать то, что вам нужно, просто используя std :: map
Редактировать: просто подумал об альтернативной версии, которую было бы проще сгенерировать, но сложнее сообщить с помощью: std :: vector >. Для каждой новой строки в файле вы генерируете новую карту и помещаете ее в вектор. Вы можете создать вспомогательный набор типов , который будет содержать все слова, которые появляются в файле для использования в ваших отчетах.
Вероятно, так или иначе я бы сделал это, за исключением того, что я инкапсулировал все это дерьмо в классе, так что я просто сделал бы что-то вроде:
my_counter.word_appearance(word,line_no);