Источник developerWorks Россия
1. Контейнеры в Qt
Qt предоставляет свои реализации строк, контейнеров и алгоритмов в качестве упрощенной кроссплатформенной альтернативы для STL
Как и в STL, контейнеры Qt используют шаблоны C++ и позволяют хранить элементы нужного типа. Например, QLinkedList<T> – шаблон связного списка; если требуется связный список целых чисел, то используется QLinkedList<int> .
Для контейнеров применяется неявное разделение памяти. Передача
контейнеров в виде аргументов и их возврат не связаны с затратами, так
как копия будет создаваться лишь при необходимости изменения одного из
объектов:
QList<T> list1; QList<T> list2;
list1 << a << b << c; // элементы a, b, c заносятся в list1
list2 = list1; // содержимое списков совпадает
list2[0] = d; // теперь list1 копируется; // list2 изменен, но не list1
|
По возможности, лучше передавать const-ссылки, так как в этом случае изменений гарантированно не будет.
У всех контейнеров есть некоторые общие методы:
int size() const; // число элементов void clear(); // удалить все элементы bool isEmpty() const; // true, если size() == 0
|
Также везде перегружены операторы сравнения == и !=.
Подразумевается, что для типа элементов будет перегружен оператор ==.
Контейнеры с последовательным хранением элементов сравниваются с учетом
порядка, остальные контейнеры порядок не учитывают.
...читать дальше
|