Как применять алгоритмы STL в Qt, на примере QStringList и set_difference, например? Если это возможно, конечно.
У всех кьютовских контейнеров есть методы begin() и end() (а также cbegin() итп), которые возвращают STL-совместимые итераторы; есть они в том числе и у QList, наследником которого является QStringList. Их и надо передать в STL'евские функции обобщённых алгоритмов.
QSet<QString> strongWords{"криворучкие", "дураки", /*...*/};
//....
QString userOpinion = getUserOpinion();
QStringList userOpinionWords = qSort(userOpinion.split(QRegExp("\\s+")'));
QStrinList inapropriateWords;
std::set_difference(userOpinionWords.cbegin(), userOpinionWords.cend()
strongWords.cbegin(), strongWords.cend(),
std::inserter(inapropriateWords, inapropriateWords.begin()));
if (!inapropriateWords.isEmpty()) {
QMessageBox::info (QString ("Ваш отзыв очень важен для нас, но следующие слова неприемлимы: ").append(inapropriateWords.join(", ")));
throw std::runtime_error ("Пользователь был груб, поэтому мы бросим исключение и не будем его ловить.");
}
Также надо помнить, что по своей сути std::set_difference() принимает на вход только упорядоченные контейнеры...
Продвижение своими сайтами как стратегия роста и независимости