Как применять алгоритмы STL в Qt?

163
28 апреля 2021, 22:30

Как применять алгоритмы STL в Qt, на примере QStringList и set_difference, например? Если это возможно, конечно.

Answer 1

У всех кьютовских контейнеров есть методы 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() принимает на вход только упорядоченные контейнеры...

READ ALSO
Как сделать `position: fixed` без последствий? [закрыт]

Как сделать `position: fixed` без последствий? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

103
При нажатии на картинку выезжает блок css/js [дубликат]

При нажатии на картинку выезжает блок css/js [дубликат]

Верстаю макет из psd На первой картинке простое состояние блока а на второй hoverКак при наведении мыши сделать выезжающий оранжевый блок

103
Сохранение текста, введенного в поле формы на html странице без использования php

Сохранение текста, введенного в поле формы на html странице без использования php

Можно ли при нажатии на кнопку 'Сохранить' сохранять значение текстового поля? Допустим, я ввёл в текстовое поле текст "777", и мне нужно сохранить...

129