У меня небольшая проблема при использовании списков.
Что у меня есть: я читаю строки из чата, где время от времени появляются новые строки текста.
Я всегда беру последние 20 строк из коробки, затем я хочу сравнить их со всеми строками, которые я получил ранее. Если обнаружена новая строка, она отправляется внешней функции, которая разбирает строку для дальнейшей обработки. Раньше я использовал массивы и векторы, но список, кажется, лучший способ сделать это.
Моя идея: у меня есть один список, который называется usedlines, который содержит все старые уже использованные строки.
Список fetchedLines содержит последние 20 строк, извлеченных из чата.
Нет, я просто хочу пройти через оба цикла, чтобы выяснить, содержит ли извлеченные строки новую строку, которую раньше не видели. После цикла остатки в выбранных линиях передаются следующей функции.
Проблема: Когда я зацикливаюсь на этом цикле, через некоторое время я получаю плохой указатель Зачем?
Бонус: у кого-нибудь есть лучшая идея, чтобы решить эту задачу?
typedef list<string> LISTSTR;
LISTSTR::iterator f;
LISTSTR::iterator u;
LISTSTR fetchedlines;
LISTSTR usedLines;
fetchedlines.insert(fetchedlines.end(), "one");
fetchedlines.push_back("two");
fetchedlines.push_back("three");
fetchedlines.push_back("four");
fetchedlines.push_back("three");
usedLines.push_back("three");
usedLines.push_back("blää");
usedLines.push_back("lumpi");
usedLines.push_back("four");
for (u = usedLines.begin(); u != usedLines.end(); u++)
{
for (f = fetchedlines.begin(); f != fetchedlines.end(); f++)
{
if(*u==*f)
fetchedlines.remove(*f);
}
}