Spec-Zone.ru › Qt 5.11

Класс QVector

Класс QVector — шаблонный класс, предоставляющий динамический массив. Подробнее...

Заголовок: #include <QVector>
qmake: QT += core
Наследуется от:

QStack и QXmlStreamAttributes

  • Список всех членов, включая наследуемые

Примечание: Все функции в этом классе являются реентерабельными.

Открытые типы

typedef ConstIterator
typedef Iterator
typedef const_iterator
typedef const_pointer
typedef const_reference
typedef const_reverse_iterator
typedef difference_type
typedef iterator
typedef pointer
typedef reference
typedef reverse_iterator
typedef size_type
typedef value_type

Открытые функции

QVector()
QVector(int size)
QVector(int size, const T &value)
QVector(const QVector<T> &other)
QVector(QVector<T> &&other)
QVector(std::initializer_list<T> args)
~QVector()
void append(const T &value)
void append(T &&value)
void append(const QVector<T> &value)
const T & at(int i) const
QVector::reference back()
QVector::const_reference back() const
QVector::iterator begin()
QVector::const_iterator begin() const
int capacity() const
QVector::const_iterator cbegin() const
QVector::const_iterator cend() const
void clear()
QVector::const_iterator constBegin() const
const T * constData() const
QVector::const_iterator constEnd() const
const T & constFirst() const
const T & constLast() const
bool contains(const T &value) const
int count(const T &value) const
int count() const
QVector::const_reverse_iterator crbegin() const
QVector::const_reverse_iterator crend() const
T * data()
const T * data() const
bool empty() const
QVector::iterator end()
QVector::const_iterator end() const
bool endsWith(const T &value) const
QVector::iterator erase(QVector::iterator pos)
QVector::iterator erase(QVector::iterator begin, QVector::iterator end)
QVector<T> & fill(const T &value, int size = ...)
T & first()
const T & first() const
T & front()
QVector::const_reference front() const
int indexOf(const T &value, int from = ...) const
void insert(int i, T &&value)
void insert(int i, const T &value)
void insert(int i, int count, const T &value)
QVector::iterator insert(QVector::iterator before, int count, const T &value)
QVector::iterator insert(QVector::iterator before, const T &value)
QVector::iterator insert(QVector::iterator before, T &&value)
bool isEmpty() const
T & last()
const T & last() const
int lastIndexOf(const T &value, int from = ...) const
int length() const
QVector<T> mid(int pos, int length = ...) const
void move(int from, int to)
void pop_back()
void pop_front()
void prepend(T &&value)
void prepend(const T &value)
void push_back(const T &value)
void push_back(T &&value)
void push_front(T &&value)
void push_front(const T &value)
QVector::reverse_iterator rbegin()
QVector::const_reverse_iterator rbegin() const
void remove(int i)
void remove(int i, int count)
int removeAll(const T &t)
void removeAt(int i)
void removeFirst()
void removeLast()
bool removeOne(const T &t)
QVector::reverse_iterator rend()
QVector::const_reverse_iterator rend() const
void replace(int i, const T &value)
void reserve(int size)
void resize(int size)
void shrink_to_fit()
int size() const
void squeeze()
bool startsWith(const T &value) const
void swap(QVector<T> &other)
T takeAt(int i)
T takeFirst()
T takeLast()
QList<T> toList() const
std::vector<T> toStdVector() const
T value(int i) const
T value(int i, const T &defaultValue) const
bool operator!=(const QVector<T> &other) const
QVector<T> operator+(const QVector<T> &other) const
QVector<T> & operator+=(const QVector<T> &other)
QVector<T> & operator+=(const T &value)
QVector<T> & operator+=(T &&value)
QVector<T> & operator<<(const T &value)
QVector<T> & operator<<(const QVector<T> &other)
QVector<T> & operator<<(T &&value)
QVector<T> & operator=(const QVector<T> &other)
QVector<T> & operator=(QVector<T> &&other)
bool operator==(const QVector<T> &other) const
T & operator[](int i)
const T & operator[](int i) const

Статические публичные члены

QVector<T> fromList(const QList<T> &list)
QVector<T> fromStdVector(const std::vector<T> &vector)

Связанные нечлены

uint qHash(const QVector<T> &key, uint seed = ...)
bool operator<(const QVector<T> &lhs, const QVector<T> &rhs)
QDataStream & operator<<(QDataStream &out, const QVector<T> &vector)
bool operator<=(const QVector<T> &lhs, const QVector<T> &rhs)
bool operator>(const QVector<T> &lhs, const QVector<T> &rhs)
bool operator>=(const QVector<T> &lhs, const QVector<T> &rhs)
QDataStream & operator>>(QDataStream &in, QVector<T> &vector)

Подробное описание

Класс QVector — шаблонный класс, предоставляющий динамический массив.

QVector<T> — один из универсальных классов контейнеров Qt. Он хранит свои элементы в смежных участках памяти и обеспечивает быстрый доступ по индексу.

QList<T>, QLinkedList<T>, QVector<T> и QVarLengthArray<T> предоставляют похожие API и функциональность. Часто они взаимозаменяемы, но есть последствия для производительности. Вот обзор вариантов использования:

  • QVector должен быть вашим предпочтительным вариантом по умолчанию. QVector<T> обычно обеспечит лучшую производительность, чем QList<T>, поскольку QVector<T> всегда хранит элементы последовательно в памяти, в то время как QList<T> будет выделять свои элементы в куче, если sizeof(T) <= sizeof(void*) и T было объявлено либо Q_MOVABLE_TYPE или Q_PRIMITIVE_TYPE с помощью Q_DECLARE_TYPEINFO. См. Преимущества и недостатки использования QList для объяснения.
  • Однако QList используется в API Qt для передачи параметров и возврата значений. Используйте QList для взаимодействия с этими API.
  • Если вам нужна настоящая связанная структура, которая гарантирует постоянное время вставок в середину списка и использует итераторы для элементов вместо индексов, используйте QLinkedList.

Примечание: QVector и QVarLengthArray оба гарантируют совместимость с массивами C. QList — нет. Это может быть важно, если ваше приложение должно взаимодействовать с API C.

Примечание: Итераторы в QLinkedList и ссылки на элементы в куче QLists остаются действительными, пока ссылаемые элементы остаются в контейнере. Это не относится к итераторам и ссылкам в QVector и не требующим выделения в куче QLists.

END_OF_DOCUMENT_MARKER

Вот пример QVector, хранящего целые числа, и QVector, хранящего значения QString:

QVector<int> integerVector;
QVector<QString> stringVector;

QVector хранит свои элементы в векторе (массиве). Обычно векторы создаются с начальным размером. Например, следующий код создает QVector с 200 элементами:

QVector<QString> vector(200);

Элементы автоматически инициализируются значением по умолчанию. Если вы хотите инициализировать вектор другим значением, передайте это значение вторым аргументом конструктору:

QVector<QString> vector(200, "Pass");

Вы также можете в любое время вызвать fill() для заполнения вектора определенным значением.

QVector использует индексы с нуля, как и массивы C++. Для доступа к элементу по определенному индексу можно использовать оператор[](). Для не-const векторов оператор[]() возвращает ссылку на элемент, которая может использоваться в левой части присваивания:

if (vector[0] == "Liz")
    vector[0] = "Elizabeth";

Для только для чтения доступа альтернативный синтаксис — использовать at():

for (int i = 0; i < vector.size(); ++i) {
    if (vector.at(i) == "Alfonso")
        cout << "Found Alfonso at position " << i << endl;
}

at() может быть быстрее, чем оператор[](), поскольку он никогда не приводит к выполнению глубокой копии.

Другой способ доступа к данным, хранящимся в QVector, — вызвать data(). Функция возвращает указатель на первый элемент в векторе. Вы можете использовать указатель для прямого доступа и изменения элементов, хранящихся в векторе. Указатель также полезен, если вам нужно передать QVector в функцию, принимающую обычный массив C++.

Если вы хотите найти все вхождения определенного значения в векторе, используйте indexOf() или lastIndexOf(). Первый выполняет поиск вперед, начиная с заданного индекса, второй — назад. Оба возвращают индекс совпадающего элемента, если он найден; в противном случае — -1. Например:

int i = vector.indexOf("Harumi");
if (i != -1)
    cout << "First occurrence of Harumi is at position " << i << endl;

Если вам просто нужно проверить, содержит ли вектор определенное значение, используйте contains(). Если вы хотите узнать, сколько раз определенное значение встречается в векторе, используйте count().

QVector предоставляет следующие базовые функции для добавления, перемещения и удаления элементов: insert(), replace(), remove(), prepend(), append(). За исключением append() и replace(), эти функции могут быть медленными (времени линейного порядка) для больших векторов, поскольку они требуют перемещения многих элементов в векторе на одну позицию в памяти. Если вам нужен класс контейнера, который обеспечивает быструю вставку/удаление в середине, используйте QList или QLinkedList.

В отличие от обычных массивов C++, размер QVector может быть изменен в любое время путем вызова resize(). Если новый размер больше старого, QVector может потребоваться перевыделить весь вектор. QVector пытается уменьшить число перевыделений, предварительно выделяя до удвоенного объема памяти, необходимого для фактических данных.

Если вы заранее знаете приблизительное количество элементов, которое будет содержать QVector, вы можете вызвать reserve(), попросив QVector предварительно выделить определенное количество памяти. Вы также можете вызвать capacity(), чтобы узнать, сколько памяти фактически выделил QVector.

Обратите внимание, что использование не-const операторов и функций может привести к тому, что QVector сделает глубокую копию данных. Это связано с неявным совместным использованием.

Тип значения QVector должен быть типом данных, допускающим присваивание. Это охватывает большинство часто используемых типов данных, но компилятор не позволит вам, например, хранить QWidget как значение; вместо этого храните указатель QWidget *. Некоторые функции имеют дополнительные требования; например, indexOf() и lastIndexOf() ожидают, что тип значения будет поддерживать operator==(). Эти требования документированы для каждой функции.

Как и другие классы контейнеров, QVector предоставляет итераторы в стиле Java (QVectorIterator и QMutableVectorIterator) и итераторы в стиле STL (QVector::const_iterator и QVector::iterator). На практике они редко используются, потому что вы можете использовать индексы в QVector.

Помимо QVector, Qt также предоставляет QVarLengthArray — класс очень низкого уровня с небольшим функционалом, оптимизированный для скорости.

QVector не поддерживает вставки, добавление в начало, добавление в конец или замену ссылок на свои собственные значения. В этом случае ваше приложение завершится с сообщением об ошибке.

Дополнительная информация об использовании Qt-контейнеров

Подробное сравнение Qt-контейнеров между собой и с STL-контейнерами см. в Understand the Qt Containers.

См. также QVectorIterator, QMutableVectorIterator, QList и QLinkedList.

Документация типов членов

typedef QVector::ConstIterator

Синоним в стиле Qt для QVector::const_iterator.

typedef QVector::Iterator

Синоним в стиле Qt для QVector::iterator.

typedef QVector::const_iterator

Тип QVector::const_iterator предоставляет итератор в стиле STL для QVector и QStack.

QVector предоставляет как итераторы в стиле STL, так и в стиле Java. Итератор const в стиле STL — это просто псевдоним для «const T *» (указатель на const T).

Предупреждение: Итераторы на контейнерах с неявным совместным использованием не работают точно так же, как STL-итераторы. Следует избегать копирования контейнера во время активности итераторов на этом контейнере. Дополнительную информацию см. в разделе Implicit sharing iterator problem.

См. также QVector::constBegin(), QVector::constEnd(), QVector::iterator и QVectorIterator.

typedef QVector::const_pointer

Псевдоним для const T *. Предоставлен для совместимости со STL.

typedef QVector::const_reference

Псевдоним для T &. Предоставлен для совместимости со STL.

typedef QVector::const_reverse_iterator

Тип QVector::const_reverse_iterator предоставляет обратный итератор в стиле STL для QVector.

Это просто псевдоним для std::reverse_iterator<const T*>.

Предупреждение: Итераторы на контейнерах с неявным совместным использованием не работают точно так же, как STL-итераторы. Следует избегать копирования контейнера во время активности итераторов на этом контейнере. Дополнительную информацию см. в разделе Implicit sharing iterator problem.

Этот тип был введен в Qt 5.6.

См. также QVector::rbegin(), QVector::rend(), QVector::reverse_iterator и QVector::const_iterator.

typedef QVector::difference_type

Псевдоним для ptrdiff_t. Предоставлен для совместимости со STL.

typedef QVector::iterator

Тип QVector::iterator предоставляет итератор в стиле STL для QVector и QStack.

QVector предоставляет как итераторы в стиле STL, так и в стиле Java. Итератор в стиле STL — это просто псевдоним для «T *» (указатель на T).

Предупреждение: Итераторы на контейнерах с неявным совместным использованием не работают точно так же, как STL-итераторы. Следует избегать копирования контейнера во время активности итераторов на этом контейнере. Дополнительную информацию см. в разделе Implicit sharing iterator problem.

См. также QVector::begin(), QVector::end(), QVector::const_iterator и QMutableVectorIterator.

typedef QVector::pointer

Псевдоним для T *. Предоставлен для совместимости со STL.

typedef QVector::reference

Псевдоним для T &. Предоставлен для совместимости со STL.

typedef QVector::reverse_iterator

Тип QVector::reverse_iterator предоставляет обратный итератор в стиле STL для QVector.

Это просто псевдоним для std::reverse_iterator<T*>.

Предупреждение: Итераторы на контейнерах с неявным совместным использованием не работают точно так же, как STL-итераторы. Следует избегать копирования контейнера во время активности итераторов на этом контейнере. Дополнительную информацию см. в разделе Implicit sharing iterator problem.

Этот тип был введен в Qt 5.6.

См. также QVector::rbegin(), QVector::rend(), QVector::const_reverse_iterator и QVector::iterator.

typedef QVector::size_type

Псевдоним для int. Предоставлен для совместимости со STL.

typedef QVector::value_type

Псевдоним для T. Предоставлен для совместимости со STL.

Документация функций-членов

void QVector::push_front(const T &value)

void QVector::push_front(T &&value)

Данная функция предоставляется для совместимости со STL. Она эквивалентна prepend(value).

QVector::iterator QVector::insert(QVector::iterator before, const T &value)

QVector::iterator QVector::insert(QVector::iterator before, T &&value)

Это перегруженная функция.

Вставляет value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на вставленный элемент.

void QVector::insert(int i, const T &value)

void QVector::insert(int i, T &&value)

Вставляет value в позицию с индексом i в векторе. Если i равно 0, значение вставляется в начало вектора. Если i равно size(), значение добавляется в конец вектора.

Пример:

QVector<QString> vector;
vector << "alpha" << "beta" << "delta";
vector.insert(2, "gamma");
// vector: ["alpha", "beta", "gamma", "delta"]

Для больших векторов эта операция может быть медленной (линейное время), так как требует перемещения всех элементов с индексами i и выше на одну позицию в памяти. Если вам нужен класс контейнера с быстрой функцией insert(), используйте QLinkedList вместо QVector.

См. также append(), prepend() и remove().

void QVector::prepend(const T &value)

void QVector::prepend(T &&value)

Вставляет value в начало вектора.

Пример:

QVector<QString> vector;
vector.prepend("one");
vector.prepend("two");
vector.prepend("three");
// vector: ["three", "two", "one"]

Это то же самое, что vector.insert(0, value).

Для больших векторов эта операция может быть медленной (линейное время), так как требует перемещения всех элементов вектора на одну позицию дальше в памяти. Если вам нужен класс контейнера с быстрой функцией prepend(), используйте QList или QLinkedList вместо QVector.

См. также append() и insert().

QVector::QVector()

Конструирует пустой вектор.

См. также resize().

QVector::QVector(int size)

Конструирует вектор с начальным размером size элементов.

Элементы инициализируются значением по умолчанию.

См. также resize().

QVector::QVector(int size, const T &value)

Конструирует вектор с начальным размером size элементов. Каждый элемент инициализируется значением value.

См. также resize() и fill().

QVector::QVector(const QVector<T> &other)

Конструирует копию other.

Эта операция выполняется за постоянное время, так как QVector использует неявное совместное использование. Это делает возврат QVector из функции очень быстрым. Если модифицируется общий экземпляр, он копируется (copy-on-write), что занимает линейное время.

См. также operator=().

QVector::QVector(QVector<T> &&other)

Конструирует экземпляр QVector с перемещением, делая его указывающим на тот же объект, на который указывал other.

Функция была добавлена в Qt 5.2.

QVector::QVector(std::initializer_list<T> args)

Конструирует вектор из std::initializer_list, заданной args.

Этот конструктор включен только если компилятор поддерживает C++11 списки инициализации.

Функция была добавлена в Qt 4.8.

QVector::~QVector()

Уничтожает вектор.

void QVector::append(const T &value)

Вставляет value в конец вектора.

Пример:

QVector<QString> vector;
vector.append("one");
vector.append("two");
QString three = "three";
vector.append(three);
// vector: ["one", "two", "three"]
// three: "three"

Это эквивалентно вызову resize(size() + 1) и присвоению value новому последнему элементу в векторе.

Эта операция относительно быстрая, так как QVector обычно выделяет больше памяти, чем необходимо, поэтому может расти без перевыделения всего вектора каждый раз.

См. также operator<<(), prepend() и insert().

void QVector::append(T &&value)

Это перегруженная функция.

Пример:

QVector<QString> vector;
vector.append("one");
vector.append("two");
QString three = "three";
vector.append(std::move(three));
// vector: ["one", "two", "three"]
// three: ""

Функция была добавлена в Qt 5.6.

void QVector::append(const QVector<T> &value)

Это перегруженная функция.

Добавляет элементы вектора value в этот вектор.

Функция была добавлена в Qt 5.5.

См. также operator<<() и operator+=().

const T &QVector::at(int i) const

Возвращает элемент с индексом i в векторе.

i должен быть корректным индексом в векторе (т.е., 0 <= i < size()).

См. также value() и operator[]().

QVector::reference QVector::back()

Функция предоставляется для совместимости со STL. Она эквивалентна last().

QVector::const_reference QVector::back() const

Это перегруженная функция.

QVector::iterator QVector::begin()

Возвращает итератор STL, указывающий на первый элемент в векторе.

См. также constBegin() и end().

QVector::const_iterator QVector::begin() const

Это перегруженная функция.

int QVector::capacity() const

Возвращает максимальное количество элементов, которое может храниться в векторе без принудительного перевыделения памяти.

Единственная цель этой функции — предоставить средство для точной настройки использования памяти QVector. Как правило, вам редко придется вызывать эту функцию. Если нужно узнать количество элементов в векторе, используйте size().

См. также reserve() и squeeze().

QVector::const_iterator QVector::cbegin() const

Возвращает постоянный итератор STL, указывающий на первый элемент в векторе.

Функция была добавлена в Qt 5.0.

См. также begin() и cend().

QVector::const_iterator QVector::cend() const

Возвращает постоянный итератор STL, указывающий на воображаемый элемент после последнего элемента в векторе.

Функция была добавлена в Qt 5.0.

См. также cbegin() и end().

void QVector::clear()

Удаляет все элементы из вектора.

Примечание: До Qt 5.6 это также освобождало память, используемую вектором. Начиная с Qt 5.7, емкость сохраняется. Чтобы освободить всю емкость, поменяйте вектор с вектором по умолчанию:

QVector<T> v ...;
QVector<T>().swap(v);
Q_ASSERT(v.capacity() == 0);

или вызовите squeeze().

См. также squeeze().

QVector::const_iterator QVector::constBegin() const

Возвращает постоянный итератор STL, указывающий на первый элемент в векторе.

См. также begin() и constEnd().

const T *QVector::constData() const

Возвращает указатель на данные в векторе. Указатель можно использовать для доступа к элементам в векторе. Указатель остается действительным, пока вектор не перевыделяется.

Данная функция в основном полезна для передачи вектора в функцию, принимающую обычный массив C++.

См. также data() и operator[]().

QVector::const_iterator QVector::constEnd() const

Возвращает константный итератор в стиле STL, указывающий на воображаемый элемент после последнего элемента в векторе.

См. также constBegin() и end().

const T &QVector::constFirst() const

Возвращает константную ссылку на первый элемент в векторе. Эта функция предполагает, что вектор не пустой.

Эта функция была введена в Qt 5.6.

См. также constLast(), isEmpty() и first().

const T &QVector::constLast() const

Возвращает константную ссылку на последний элемент в векторе. Эта функция предполагает, что вектор не пустой.

Эта функция была введена в Qt 5.6.

См. также constFirst(), isEmpty() и last().

bool QVector::contains(const T &value) const

Возвращает true , если вектор содержит вхождение value; в противном случае возвращает false.

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также indexOf() и count().

int QVector::count(const T &value) const

Возвращает количество вхождений value в векторе.

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также contains() и indexOf().

int QVector::count() const

Это перегруженная функция.

То же, что и size().

QVector::const_reverse_iterator QVector::crbegin() const

Возвращает константный итератор в стиле STL обратного порядка, указывающий на первый элемент в векторе в обратном порядке.

Эта функция была введена в Qt 5.6.

См. также begin(), rbegin() и rend().

QVector::const_reverse_iterator QVector::crend() const

Возвращает константный итератор в стиле STL обратного порядка, указывающий на позицию, следующую за последним элементом в векторе в обратном порядке.

Эта функция была введена в Qt 5.6.

См. также end(), rend() и rbegin().

T *QVector::data()

Возвращает указатель на данные, хранящиеся в векторе. Указатель можно использовать для доступа к элементам и их изменения в векторе.

Пример:

QVector<int> vector(10);
int *data = vector.data();
for (int i = 0; i < 10; ++i)
    data[i] = 2 * i;

Указатель остается допустимым до тех пор, пока вектор не перевыделяется.

Данная функция в основном полезна для передачи вектора в функцию, принимающую обычный массив C++.

См. также constData() и operator[]().

const T *QVector::data() const

Это перегруженная функция.

bool QVector::empty() const

Эта функция предоставлена для совместимости со STL. Она эквивалентна isEmpty(), возвращает true , если вектор пуст; в противном случае возвращает false.

QVector::iterator QVector::end()

Возвращает итератор в стиле STL, указывающий на воображаемый элемент после последнего элемента в векторе.

См. также begin() и constEnd().

QVector::const_iterator QVector::end() const

Это перегруженная функция.

bool QVector::endsWith(const T &value) const

Возвращает true , если этот вектор не пуст и его последний элемент равен value; в противном случае возвращает false.

Эта функция была введена в Qt 4.5.

См. также isEmpty() и last().

QVector::iterator QVector::erase(QVector::iterator pos)

Удаляет элемент, на который указывает итератор pos из вектора и возвращает итератор на следующий элемент в векторе (который может быть end()).

См. также insert() и remove().

QVector::iterator QVector::erase(QVector::iterator begin, QVector::iterator end)

Это перегруженная функция.

Удаляет все элементы от begin до (но не включая) end. Возвращает итератор на тот же элемент, на который ссылался end до вызова.

QVector<T> &QVector::fill(const T &value, int size = ...)

Присваивает value всем элементам в векторе. Если size отличается от -1 (по умолчанию), размер вектора предварительно изменяется на size.

Пример:

QVector<QString> vector(3);
vector.fill("Yes");
// vector: ["Yes", "Yes", "Yes"]

vector.fill("oh", 5);
// vector: ["oh", "oh", "oh", "oh", "oh"]

См. также resize().

T &QVector::first()

Возвращает ссылку на первый элемент в векторе. Эта функция предполагает, что вектор не пустой.

См. также last(), isEmpty() и constFirst().

const T &QVector::first() const

Это перегруженная функция.

[static] QVector<T> QVector::fromList(const QList<T> &list)

Возвращает объект QVector с данными, содержащимися в list.

Пример:

QStringList list;
list << "Sven" << "Kim" << "Ola";

QVector<QString> vect = QVector<QString>::fromList(list);
// vect: ["Sven", "Kim", "Ola"]

См. также toList() и QList::toVector().

[static] QVector<T> QVector::fromStdVector(const std::vector<T> &vector)

Возвращает объект QVector с данными, содержащимися в vector. Порядок элементов в QVector такой же, как и в vector.

Пример:

std::vector<double> stdvector;
vector.push_back(1.2);
vector.push_back(0.5);
vector.push_back(3.14);

QVector<double> vector = QVector<double>::fromStdVector(stdvector);

См. также toStdVector() и QList::fromStdList().

T &QVector::front()

Эта функция предоставлена для совместимости со STL. Она эквивалентна first().

QVector::const_reference QVector::front() const

Это перегруженная функция.

int QVector::indexOf(const T &value, int from = ...) const

Возвращает индекс первого вхождения value в векторе, выполняя поиск вперед с индекса from. Возвращает -1, если элемент не найден.

Пример:

QVector<QString> vector;
vector << "A" << "B" << "C" << "B" << "A";
vector.indexOf("B");            // returns 1
vector.indexOf("B", 1);         // returns 1
vector.indexOf("B", 2);         // returns 3
vector.indexOf("X");            // returns -1

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также lastIndexOf() и contains().

void QVector::insert(int i, int count, const T &value)

Это перегруженная функция.

Вставляет count копий value в позицию индекса i в векторе.

Пример:

QVector<double> vector;
vector << 2.718 << 1.442 << 0.4342;
vector.insert(1, 3, 9.9);
// vector: [2.718, 9.9, 9.9, 9.9, 1.442, 0.4342]

QVector::iterator QVector::insert(QVector::iterator before, int count, const T &value)

Вставляет count копий value перед элементом, на который указывает итератор before. Возвращает итератор, указывающий на первый из вставленных элементов.

bool QVector::isEmpty() const

Возвращает true , если размер вектора равен 0; в противном случае возвращает false.

См. также size() и resize().

T &QVector::last()

Возвращает ссылку на последний элемент в векторе. Эта функция предполагает, что вектор не пуст.

См. также first(), isEmpty(), и constLast().

const T &QVector::last() const

Это перегруженная функция.

int QVector::lastIndexOf(const T &value, int from = ...) const

Возвращает индекс последнего вхождения значения value в векторе, выполняя поиск назад с индекса from. Если from равно -1 (по умолчанию), поиск начинается с последнего элемента. Возвращает -1, если элемент не найден.

Пример:

QList<QString> vector;
vector << "A" << "B" << "C" << "B" << "A";
vector.lastIndexOf("B");        // returns 3
vector.lastIndexOf("B", 3);     // returns 3
vector.lastIndexOf("B", 2);     // returns 1
vector.lastIndexOf("X");        // returns -1

Для этой функции требуется, чтобы тип значения имел реализацию operator==().

См. также indexOf().

int QVector::length() const

То же, что и size() и count().

Предоставлено для совместимости с QList.

Эта функция была добавлена в Qt 5.2.

См. также size(), count(), и QList::length().

QVector<T> QVector::mid(int pos, int length = ...) const

Возвращает подвектор, содержащий элементы из этого вектора, начиная с позиции pos. Если length равно -1 (по умолчанию), включаются все элементы после pos; в противном случае включается length элементов (или все оставшиеся элементы, если их меньше, чем length).

void QVector::move(int from, int to)

Перемещает элемент с индексом from на индекс to.

Предоставлено для совместимости с QList.

Эта функция была добавлена в Qt 5.6.

См. также QList::move().

void QVector::pop_back()

Эта функция предоставлена для совместимости со стандартной библиотекой шаблонов (STL). Она эквивалентна removeLast().

void QVector::pop_front()

Эта функция предоставлена для совместимости со стандартной библиотекой шаблонов (STL). Она эквивалентна removeFirst().

void QVector::push_back(const T &value)

Эта функция предоставлена для совместимости со стандартной библиотекой шаблонов (STL). Она эквивалентна append(value).

void QVector::push_back(T &&value)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.6.

QVector::reverse_iterator QVector::rbegin()

Возвращает итератор STL, указывающий на первый элемент вектора в обратном порядке.

Эта функция была добавлена в Qt 5.6.

См. также begin(), crbegin(), и rend().

QVector::const_reverse_iterator QVector::rbegin() const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.6.

void QVector::remove(int i)

Это перегруженная функция.

Удаляет элемент с индексом i.

См. также insert(), replace(), и fill().

void QVector::remove(int i, int count)

Это перегруженная функция.

Удаляет count элементов из середины вектора, начиная с индекса i.

См. также insert(), replace(), и fill().

int QVector::removeAll(const T &t)

Удаляет все элементы, равные t, из вектора. Возвращает количество удаленных элементов.

Предоставлено для совместимости с QList.

Эта функция была добавлена в Qt 5.4.

См. также removeOne() и QList::removeAll().

void QVector::removeAt(int i)

Удаляет элемент с индексом i. Эквивалентно

remove(i);

Предоставлено для совместимости с QList.

Эта функция была добавлена в Qt 5.2.

См. также remove() и QList::removeAt().

void QVector::removeFirst()

Удаляет первый элемент вектора. Вызов этой функции эквивалентен вызову remove(0). Вектор не должен быть пустым. Если вектор может быть пустым, вызовите isEmpty() перед вызовом этой функции.

Эта функция была добавлена в Qt 5.1.

См. также remove(), takeFirst(), и isEmpty().

void QVector::removeLast()

Удаляет последний элемент вектора. Вызов этой функции эквивалентен вызову remove(size() - 1). Вектор не должен быть пустым. Если вектор может быть пустым, вызовите isEmpty() перед вызовом этой функции.

Эта функция была добавлена в Qt 5.1.

См. также remove(), takeLast(), removeFirst(), и isEmpty().

bool QVector::removeOne(const T &t)

Удаляет первый элемент, равный t, из вектора. Возвращает значение true, если элемент был удален, и false в противном случае.

Предоставлено для совместимости с QList.

Эта функция была добавлена в Qt 5.4.

См. также removeAll() и QList::removeOne().

QVector::reverse_iterator QVector::rend()

Возвращает итератор STL, указывающий на позицию после последнего элемента вектора в обратном порядке.

Эта функция была добавлена в Qt 5.6.

См. также end(), crend(), и rbegin().

QVector::const_reverse_iterator QVector::rend() const

Это перегруженная функция.

Эта функция была добавлена в Qt 5.6.

void QVector::replace(int i, const T &value)

Заменяет элемент с индексом i значением value.

i должен быть допустимым индексом в векторе (т.е., 0 ≤ i < size()).

См. также operator[]() и remove().

void QVector::reserve(int size)

Попытка выделить память для как минимум size элементов. Если вы заранее знаете, какой будет размер вектора, следует вызвать эту функцию, чтобы предотвратить перераспределения и фрагментацию памяти.

Если size недооценивает размер, в худшем случае QVector будет работать немного медленнее. Если size переоценивает размер, вы можете использовать больше памяти, чем потребовалось бы обычной стратегии роста QVector, или меньше.

Альтернативой reserve() является вызов resize(). Скорость зависит от типа элементов, потому что resize() по умолчанию создает все элементы и требует присваивания существующим элементам, а не вызова append(), который выполняет копирование или перемещение. Для простых типов, таких как int или double, resize() обычно быстрее, но для более сложных типов следует использовать reserve().

Предупреждение: Если размер, переданный в resize(), недооценен, вы столкнетесь с недостатком выделенной памяти и неопределенным поведением. Этого недостатка нет у reserve(), потому что размер рассматривается как просто подсказка.

См. также squeeze() и capacity().

void QVector::resize(int size)

Устанавливает размер вектора в size. Если size больше текущего размера, добавляются элементы в конец; новые элементы инициализируются значением по умолчанию. Если size меньше текущего размера, элементы удаляются с конца.

Начиная с Qt 5.6, resize() больше не уменьшает ёмкость. Чтобы освободить избыточную ёмкость, используйте squeeze().

См. также size().

void QVector::shrink_to_fit()

Эта функция предоставлена для совместимости со стандартной библиотекой шаблонов (STL). Она эквивалентна squeeze().

Эта функция была добавлена в Qt 5.10.

int QVector::size() const

Возвращает количество элементов в векторе.

См. также isEmpty() и resize().

void QVector::squeeze()

Освобождает память, не необходимую для хранения элементов.

Единственная цель этой функции — обеспечить возможность точной настройки использования памяти QVector. Как правило, вам редко понадобится вызывать эту функцию.

См. также reserve() и capacity().

bool QVector::startsWith(const T &value) const

Возвращает true , если этот вектор не пустой и его первый элемент равен value; в противном случае возвращает false.

Эта функция была добавлена в Qt 4.5.

См. также isEmpty() и first().

void QVector::swap(QVector<T> &other)

Меняет местами вектор other и этот вектор. Эта операция очень быстрая и никогда не приводит к ошибкам.

Эта функция была добавлена в Qt 4.8.

T QVector::takeAt(int i)

Удаляет элемент по индексу i и возвращает его.

Эквивалентно

T t = at(i);
remove(i);
return t;

Представлено для совместимости с QList.

Эта функция была добавлена в Qt 5.2.

См. также takeFirst(), takeLast() и QList::takeAt().

T QVector::takeFirst()

Удаляет первый элемент в векторе и возвращает его. Эта функция предполагает, что вектор не пустой. Для предотвращения ошибок, вызовите isEmpty() перед вызовом этой функции.

Эта функция была добавлена в Qt 5.1.

См. также takeLast() и removeFirst().

T QVector::takeLast()

Удаляет последний элемент в списке и возвращает его. Эта функция предполагает, что вектор не пустой. Для предотвращения ошибок, вызовите isEmpty() перед вызовом этой функции.

Если вам не нужно возвращаемое значение, removeLast() более эффективен.

Эта функция была добавлена в Qt 5.1.

См. также takeFirst() и removeLast().

QList<T> QVector::toList() const

Возвращает объект QList с данными, содержащимися в этом QVector.

Пример:

QVector<double> vect;
vect << "red" << "green" << "blue" << "black";

QList<double> list = vect.toList();
// list: ["red", "green", "blue", "black"]

См. также fromList() и QList::fromVector().

std::vector<T> QVector::toStdVector() const

Возвращает объект std::vector с данными, содержащимися в этом QVector. Пример:

QVector<double> vector;
vector << 1.2 << 0.5 << 3.14;

std::vector<double> stdvector = vector.toStdVector();

См. также fromStdVector() и QList::toStdList().

T QVector::value(int i) const

Возвращает значение по индексу i в векторе.

Если индекс i находится вне границ, функция возвращает значение по умолчанию. Если вы уверены, что i находится в пределах границ, можно использовать at(), что немного быстрее.

См. также at() и operator[]().

T QVector::value(int i, const T &defaultValue) const

Это перегруженная функция.

Если индекс i находится вне границ, функция возвращает defaultValue.

bool QVector::operator!=(const QVector<T> &other) const

Возвращает true , если other не равен этому вектору; в противном случае возвращает false.

Два вектора считаются равными, если они содержат одинаковые значения в том же порядке.

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также operator==().

QVector<T> QVector::operator+(const QVector<T> &other) const

Возвращает вектор, содержащий все элементы этого вектора, за которыми следуют все элементы вектора other.

См. также operator+=().

QVector<T> &QVector::operator+=(const QVector<T> &other)

Добавляет элементы вектора other в этот вектор и возвращает ссылку на этот вектор.

См. также operator+() и append().

QVector<T> &QVector::operator+=(const T &value)

Это перегруженная функция.

Добавляет value в конец вектора.

См. также append() и operator<<().

QVector<T> &QVector::operator+=(T &&value)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.11.

См. также append() и operator<<().

QVector<T> &QVector::operator<<(const T &value)

Добавляет value в конец вектора и возвращает ссылку на этот вектор.

См. также append() и operator+=().

QVector<T> &QVector::operator<<(const QVector<T> &other)

Добавляет other в конец вектора и возвращает ссылку на вектор.

QVector<T> &QVector::operator<<(T &&value)

Это перегруженная функция.

Эта функция была добавлена в Qt 5.11.

См. также append() и operator+=().

QVector<T> &QVector::operator=(const QVector<T> &other)

Присваивает other этому вектору и возвращает ссылку на этот вектор.

QVector<T> &QVector::operator=(QVector<T> &&other)

Перемещающее присваивание other этому экземпляру QVector.

Эта функция была добавлена в Qt 5.2.

bool QVector::operator==(const QVector<T> &other) const

Возвращает true , если other равен этому вектору; в противном случае возвращает false.

Два вектора считаются равными, если они содержат одинаковые значения в том же порядке.

Эта функция требует, чтобы тип значения имел реализацию operator==().

См. также operator!=().

T &QVector::operator[](int i)

Возвращает элемент по индексу i в виде изменяемой ссылки.

i должен быть допустимым индексом в векторе (т.е., 0 <= i < size()).

Обратите внимание, что использование неконстантных операторов может привести к тому, что QVector сделает глубокую копию.

См. также at() и value().

const T &QVector::operator[](int i) const

Это перегруженная функция.

То же самое, что и at(i).

Связанные нечлены

uint qHash(const QVector<T> &key, uint seed = ...)

Возвращает значение хэш-функции для key, используя seed для инициализации вычисления.

Эта функция требует перегрузки qHash() для типа значения T.

Эта функция была добавлена в Qt 5.6.

bool operator<(const QVector<T> &lhs, const QVector<T> &rhs)

Возвращает true, если вектор lhs лексикографически меньше, чем rhs; в противном случае возвращает false.

Эта функция требует, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

QDataStream &operator<<(QDataStream &out, const QVector<T> &vector)

Записывает вектор vector в поток out.

Эта функция требует, чтобы тип значения реализовывал operator<<().

См. также Формат операторов QDataStream.

bool operator<=(const QVector<T> &lhs, const QVector<T> &rhs)

Возвращает true, если вектор lhs лексикографически меньше или равен rhs; в противном случае возвращает false.

Эта функция требует, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

bool operator>(const QVector<T> &lhs, const QVector<T> &rhs)

Возвращает true, если вектор lhs лексикографически больше, чем rhs; в противном случае возвращает false.

Эта функция требует, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

bool operator>=(const QVector<T> &lhs, const QVector<T> &rhs)

Возвращает true, если вектор lhs лексикографически больше или равен rhs; в противном случае возвращает false.

Эта функция требует, чтобы тип значения имел реализацию operator<().

Эта функция была добавлена в Qt 5.6.

QDataStream &operator>>(QDataStream &in, QVector<T> &vector)

Считывает вектор из потока in в vector.

Эта функция требует, чтобы тип значения реализовывал operator>>().

См. также Формат операторов QDataStream.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qvector.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API