Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generic Search Algorithms for Qt container classes

The STL overs a variety of functions to find elements in container classes. Are there similar functions in for Qt 5.5 container classes e.g. QList or QVector?

Especially, I'm looking for an equivalent one-liner i.e. std::find_if using Qt containers and Qt algorithms:

int main(int arg, char** args) {
    std::vector<int> c = { 2,3,4,6,6,15 };
    if (std::find_if(c.begin(), c.end(), [](const int& value) { return value % 5 == 0; }) != c.end()) {
        std::cout << "At least one element divisible by 5." << std::endl;
    } else {
        std::cout << "No element is divisible by 5." << std::endl;
    }
    return 0;
}

The predicate of an element being divisible by 5 should be just serve as an example.

Does the Qt Framework provides such nice algorithms?

like image 225
Aleph0 Avatar asked Mar 13 '23 03:03

Aleph0


1 Answers

STL algorithms defined in algorithm header can be used with Qt containers. If Qt lacks an equivalent algorithm there is no reason to avoid using the STL algorithm. If Qt is built with STL support it should work by default.

#include <algorithm> // std::find_if
#include <QApplication>
#include <QVector>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QVector<int> c{ 2,3,4,6,6,15 };
    if (std::find_if(c.begin(), c.end(), [](const int& value) { return value % 5 == 0; }) != c.end()) {
        ...
    }
    return app.exec();
}
like image 146
talamaki Avatar answered Mar 24 '23 21:03

talamaki