Ошибка возникла на первом cout
,
полный текст ошибки:
error: no match for 'operator[]' (operand types are 'std::vectorstd::pair<std::__cxx11::basic_string<char, int> >' and 'std::pairstd::__cxx11::basic_string<char, int>')|
int ss = 0;
string st1, k = "";
cin >> st1;
vector <pair<string, int>> h(1000);
for (int i = 0; i < st1.size(); i++)
{
if (st1[i] == '*')
{
h[ss].first = k;
h[ss].second = (st1.find(k));
k = "";
ss++;
continue;
}
k += st1[i];
}
for (auto i: h)
{
cout << h[i].first() << "\n";
cout << h[i].second() << "\n";
}
Уверен, что Вы заметили что этот цикл
for (int i = 0; i < st1.size(); i++)
отличается от этого
for (auto i: h)
Циклы, подобные второму, появились в С++11. Такой цикл называется "цикл основанный на диапазоне". Что он делает? Он по очереди инициализирует переменную i
всеми значениями из контейнера h
. В Вашем векторе хранятся элементы типа pair<string,int>
. Значит и i
имеет этот тип, поэтому выводить нужно так:
for (auto i: h)
{
cout << i.first << "\n";
cout << i.second << "\n";
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Тема наследованиеЗадача -Разработать иерархическую структуру классов для обработки данных
Я много читал о том, как работать с потоками в QtКто-то наследуется от QThread и переопределяет void run();, кто-то наследует класс worker от QObject, связывает...
Есть код который подсчитывает кол-во символов и слов в переменной $textС подсчётом символов всё хорошо , но с подсчётом слов есть один баг(фича)