In 2019, I optimized QStringList::removeDuplicates() by using std::pmp::unordered_set with a std::pmr::monotonic_buffer_resource, when available. The class that I wrote to encapsulate this optimization has since been re-implemented three times. The latest iteration has recently landed in KDToolBox. If you have code that looks a bit like this: then you should read on.
C++ Get the RSS Feed
Content related to C++
Improving C++ Development in Visual Studio Code with compile_commands.json and Bear
As described in our previous blog posts, you can use Visual Studio Code as an IDE for C++ projects. It works particularly well with CMake-based projects. Unfortunately, with build systems not supported natively by VS Code, you need to manually configure include paths and compilation definitions, for the code model to work properly. Since the […]
On the Removal of toSet(), toList() and Others or "How Do I Convert a QList to QSet in Qt 6?"
(Apologies for the clickbait in the post title! But I’d really like people who are searching for solutions to read this.) Between Qt 5.14 and Qt 5.15, my colleague, Marc Mutz, and I submitted a series of patches to Qt that added “range constructors” to the Qt containers. This brought Qt containers one step closer […]
State of Native Big File Handling in Git
New in Qt 6.1: std::hash Support for QHash
In the previous blog post of this series, we discussed KDToolBox::QtHasher, a helper class that allows us to use unordered associative containers datatypes which have a qHash() overload but not a std::hash specialization. The majority of Qt value classes indeed are lacking such a specialization, even if they do provide a qHash() overload. For our […]
Can’t the Compiler Do That? Customized C/C++ Tooling with Clang LibTooling
Note: This is the English translation of the article first published in German Intro The ESE Congress is one of the lead events for Embedded Software Engineering in Germany. This year it was held digitally for the first time, so that participation was also possible via video. Over five days, there were 3 keynotes and […]
Signal/Slot Connection Throttlers
Another day, another blog post about KDToolBox, KDAB’s collection of miscellaneous useful C++ classes and stuff. Today, we’ll talk about ways to throttle your signal/slots connections — in other words, how to activate a slot less often than the emission rate of the signal it’s connected to. The usual reason why you may want something […]
Using Qt Datatypes in Standard Library Unordered Containers
In the previous blog post about qHash, we explained: how to declare an overload of qHash for your own datatypes, how to hash Qt datatypes for which Qt does not provide a qHash overload, and why you can’t use a type from the Standard Library (or just another library) as a key in QHash (newsflash: […]
Kann das nicht der Compiler machen? Maßgeschneidertes C/C++ Tooling mit Clang
Einleitung Der ESE Kongress ist die Leitveranstaltung für Embedded Software Engineering in Deutschland. In diesem Jahr fand er erstmals digital statt, so dass die Teilnahme auch per Video möglich war. An fünf Tagen gab es 3 Keynotes und 96 Fachvorträge aus allen Bereichen der Embedded Softwareentwicklung. Anton Kreuzkamp von KDAB sprach über maßgeschneidertes Code-Refactoring mit […]
KDSingleApplication: a class for single-instance policy applications
Another day, another blog about some of KDAB’s utility classes. Now it’s the turn of KDSingleApplication, a class that helps implement applications that follow the single-instance policy. What is a single-instance policy? Single-instance policy refers to those applications that want to spawn a unique instance for a given user session. Even when launched multiple times, […]