Qt has always had its own set of containers. Back in the 90s and through the mid-2000s, that was because one could not rely on the Standard Library being present or even being usable. That is not the case anymore. As we're going into the 2020s and Qt 6 is coming, why does Qt have its own containers? What advantages do they possess? When should application developers choose the Qt ones over the Standard Library ones and vice-versa? What is unique to Qt? This talk will answer those questions, addressing the choice of containers for particular tasks and when to opt into the Qt ones or the Standard ones and how the choice applies to Qt 4, Qt 5, and Qt 6. It'll address Qt unique feature of atomic copy-on-write semantics and how that can be both an advantage and a disadvantage. We'll also go over how Qt makes certain tasks easier and/or more intuitive and spend some time discussing how QString is unique, with no current or even near-future counterpart in the Standard Library. Finally, the talk will discuss how to use the C++ Standard Algorithms Library on Qt containers and how the C++ Ranges feature can be applied.

Mini-bio: Thiago Macieira holds a double degree in Engineering and an MBA. He has been involved in several Open Source projects for over 20 years, is an experienced C++ developer. He's been involved with Qt and KDE since 2000 and was the author of quite a few classes in QtCore, QtNetwork and the entire QtDBus module. He's been the maintainer for QtCore since 2012. He currently works for Intel’s Cloud Engineering team, where he is a Software Architect with responsibilities relating to performance on the biggest machines and most massive data sets.