#c #maps
#c #Карты
Вопрос:
не могли бы вы сказать мне, почему в моем выводе появляется 1, в то время как я отслеживаю слова и их вхождение в заданную строку с помощью карт?
string x="Hello World Hello World";
//getline(cin,x);
map<string,int> store;
stringstream s(x);
do
{
string y;
s>>y;
if(store.find(y)!=store.end())
{
auto it=store.find(y);
it->second ;
}
else
store.insert(pair<string,int>(y,1));
}while(s);
map<string, int>::iterator itr; //common for all maps
for(itr=store.begin();itr!=store.end(); itr)
cout<<itr->first<<" "<<itr->second<<endl;
Вывод:
1
Hello 2
World 2
Комментарии:
1. После того, как вы прочитали последнее
"World"
,s
все еще хорошо. Итак, цикл выполняет еще одну итерацию. Тамs>>y
происходит сбой иy
остается пустая строка — но вы все равно ее обрабатываете.
Ответ №1:
Я исправил другую часть условия, используя y.length()> 0, и теперь, похоже, все работает нормально.