Мы начинаем переходить с C на C++ в моем классе программирования, и наше текущее лабораторное задание состоит в том, чтобы создать программу, которая по заданному текстовому файлу считывает его содержимое, а затем возвращает список слов в файле вместе с номером строки, в которой они появляются. on и количество раз, которое это слово появляется в каждой строке в формате Word Line:Count.
Foo bar bar
Baz
Foo
<EOF>
Что должно вернуться:
Foo 1:1 3:1
Bar 1:2
Baz 2:1
Единственные структуры данных, которые мы рассмотрели до сих пор, — это карты, с помощью которых мы написали следующую программу, которая выводит общее количество слов.
int main(int argc, const char*argv[]) {
map<string, unsigned int> table;
string word;
while (cin >> word) {
++table[word];
}
for (std::map<string, unsigned int>::iterator itr = table.begin();
itr != table.end(); ++itr) {
cout << itr->first << "\t" << itr->second << endl;
}
return 0;
}
Нам сказали, что эту программу можно (немного) изменить минимально, чтобы она печатала номер строки и количество слов. Мой вопрос: есть ли способ использовать карту, чтобы иметь 2 значения для каждого ключа? Или есть лучший способ реализовать что-то подобное?
map<string, int>
подумайте оmap<string, map<int, int>>
. - person Beta   schedule 14.04.2015