Warum verwendet das SimpleTreeModel-Beispiel von Qt std::vector> anstelle von einfach std::vector<>?
Posted: 13 Jan 2025, 08:58
Ich verwende Qt 6.5 in einem Projekt und versuche, ein Baummodell zu überarbeiten/verbessern, das ursprünglich in Qt 5.10 geschrieben wurde. Ich habe einige Zeit damit verbracht, mir das SimpleTreeModel-Beispiel von Qt anzusehen und habe den Code erfolgreich verwendet, um mein eigenes Modell zu erstellen:
Aber etwas, das mich stört, ist die Verwendung von std::vector ( in früheren Qt-Versionen). Warum das verwenden, anstatt einen einfacheren std::vector zu verwenden?
Ich sehe keinen Sinn darin, hier einen Zeiger zu verwenden, weder einfach noch intelligent, da dies einen hinzufügt Indirektionsgrad, der nicht notwendig ist und bei Modellen mit vielen Elementen kostspielig sein kann.
Code: Select all
class TreeItem
{
public:
explicit TreeItem(QVariantList data, TreeItem *parentItem = nullptr);
void appendChild(std::unique_ptr &&child);
TreeItem *child(int row);
int childCount() const;
int columnCount() const;
QVariant data(int column) const;
int row() const;
TreeItem *parentItem();
private:
std::vector m_childItems;
QVariantList m_itemData;
TreeItem *m_parentItem;
};
Code: Select all
std::vector
Ich sehe keinen Sinn darin, hier einen Zeiger zu verwenden, weder einfach noch intelligent, da dies einen hinzufügt Indirektionsgrad, der nicht notwendig ist und bei Modellen mit vielen Elementen kostspielig sein kann.