QVarLengthArray Class
template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArrayLa clase QVarLengthArray proporciona un array de longitud variable de bajo nivel. Más...
| Cabecera: | #include <QVarLengthArray> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QVLABase y QVLAStorage |
Nota: Todas las funciones de esta clase son reentrantes.
Tipos Públicos
| const_iterator | |
| const_pointer | |
| const_reference | |
| const_reverse_iterator | |
| difference_type | |
| iterator | |
| pointer | |
| reference | |
| reverse_iterator | |
| size_type | |
| value_type |
Funciones Públicas
| QVarLengthArray() | |
| QVarLengthArray(qsizetype size) | |
| QVarLengthArray(std::initializer_list<T> args) | |
| QVarLengthArray(InputIterator first, InputIterator last) | |
(since 6.4) | QVarLengthArray(qsizetype size, const T &v) |
| QVarLengthArray(const QVarLengthArray<T, Prealloc> &other) | |
(since 6.0) | QVarLengthArray(QVarLengthArray<T, Prealloc> &&other) |
| ~QVarLengthArray() | |
| void | append(const T &t) |
| void | append(const T *buf, qsizetype size) |
| void | append(T &&t) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(std::initializer_list<T> list) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(InputIterator first, InputIterator last) |
(since 6.6) QVarLengthArray<T, Prealloc> & | assign(qsizetype n, const T &t) |
| const T & | at(qsizetype i) const |
| T & | back() |
| const T & | back() const |
| QVarLengthArray<T, Prealloc>::iterator | begin() |
| QVarLengthArray<T, Prealloc>::const_iterator | begin() const |
| qsizetype | capacity() const |
| QVarLengthArray<T, Prealloc>::const_iterator | cbegin() const |
| QVarLengthArray<T, Prealloc>::const_iterator | cend() const |
| void | clear() |
| QVarLengthArray<T, Prealloc>::const_iterator | constBegin() const |
| const T * | constData() const |
| QVarLengthArray<T, Prealloc>::const_iterator | constEnd() const |
| bool | contains(const AT &value) const |
| qsizetype | count() const |
| QVarLengthArray<T, Prealloc>::const_reverse_iterator | crbegin() const |
| QVarLengthArray<T, Prealloc>::const_reverse_iterator | crend() const |
| T * | data() |
| const T * | data() const |
(since 6.3) QVarLengthArray<T, Prealloc>::iterator | emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args) |
(since 6.3) T & | emplace_back(Args &&... args) |
| bool | empty() const |
| QVarLengthArray<T, Prealloc>::iterator | end() |
| QVarLengthArray<T, Prealloc>::const_iterator | end() const |
| QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray<T, Prealloc>::const_iterator pos) |
| QVarLengthArray<T, Prealloc>::iterator | erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end) |
| T & | first() |
| const T & | first() const |
| T & | front() |
| const T & | front() const |
| qsizetype | indexOf(const AT &value, qsizetype from = 0) const |
| void | insert(qsizetype i, T &&value) |
| void | insert(qsizetype i, const T &value) |
| QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value) |
| QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value) |
| QVarLengthArray<T, Prealloc>::iterator | insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value) |
| void | insert(qsizetype i, qsizetype count, const T &value) |
| bool | isEmpty() const |
| T & | last() |
| const T & | last() const |
| qsizetype | lastIndexOf(const AT &value, qsizetype from = -1) const |
| qsizetype | length() const |
(since 6.8) qsizetype | max_size() const |
| void | pop_back() |
| void | push_back(const T &t) |
| void | push_back(T &&t) |
| QVarLengthArray<T, Prealloc>::reverse_iterator | rbegin() |
| QVarLengthArray<T, Prealloc>::const_reverse_iterator | rbegin() const |
| void | remove(qsizetype i, qsizetype count = 1) |
(since 6.1) qsizetype | removeAll(const AT &t) |
(since 6.1) qsizetype | removeIf(Predicate pred) |
| void | removeLast() |
(since 6.1) bool | removeOne(const AT &t) |
| QVarLengthArray<T, Prealloc>::reverse_iterator | rend() |
| QVarLengthArray<T, Prealloc>::const_reverse_iterator | rend() const |
| void | replace(qsizetype i, const T &value) |
| void | reserve(qsizetype size) |
| void | resize(qsizetype size) |
(since 6.4) void | resize(qsizetype size, const T &v) |
| void | shrink_to_fit() |
| qsizetype | size() const |
| void | squeeze() |
| T | value(qsizetype i) const |
| T | value(qsizetype i, const T &defaultValue) const |
| QVarLengthArray<T, Prealloc> & | operator+=(const T &value) |
| QVarLengthArray<T, Prealloc> & | operator+=(T &&value) |
| QVarLengthArray<T, Prealloc> & | operator<<(const T &value) |
| QVarLengthArray<T, Prealloc> & | operator<<(T &&value) |
(since 6.0) QVarLengthArray<T, Prealloc> & | operator=(QVarLengthArray<T, Prealloc> &&other) |
| QVarLengthArray<T, Prealloc> & | operator=(const QVarLengthArray<T, Prealloc> &other) |
| QVarLengthArray<T, Prealloc> & | operator=(std::initializer_list<T> list) |
| T & | operator[](qsizetype i) |
| const T & | operator[](qsizetype i) const |
Miembros públicos estáticos
(since 6.8) qsizetype | maxSize() |
No miembros relacionados
(since 6.1) qsizetype | erase(QVarLengthArray<T, Prealloc> &array, const AT &t) |
(since 6.1) qsizetype | erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred) |
| size_t | qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0) |
| bool | operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
| bool | operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
| bool | operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
| bool | operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right) |
| bool | operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
| bool | operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs) |
Descripción Detallada
El lenguaje C++ no admite matrices de longitud variable en la pila. Por ejemplo, el siguiente código no compilará:
int myfunc_wrong(int n) { int table[n + 1]; // WRONG //... return table[n]; }
La alternativa es asignar la matriz en el montón (con new):
int myfunc_correct(int n) { int *table = new int[n + 1]; //... int ret = table[n]; delete[] table; return ret; }
Sin embargo, si myfunc() es llamado muy frecuentemente desde el bucle interno de la aplicación, la asignación al heap puede ser una fuente importante de ralentización.
QVarLengthArray es un intento de solventar esta carencia del lenguaje C++. Asigna un cierto número de elementos en la pila, y si redimensionas el array a un tamaño mayor, automáticamente utiliza la pila en su lugar. La asignación a la pila tiene la ventaja de que es mucho más rápida que la asignación al montón.
Ejemplo:
int myfunc_q(int n) { QVarLengthArray<int, 1024> array(n + 1); //... return array[n]; }
En el ejemplo anterior, QVarLengthArray preasignará 1024 elementos en la pila y los utilizará a menos que n + 1 sea mayor que 1024. Si omites el segundo argumento de la plantilla, se utilizará el valor por defecto de 256 de QVarLengthArray.
El tipo de valor de QVarLengthArray debe ser un tipo de datos asignable. Esto cubre la mayoría de los tipos de datos que se usan comúnmente, pero el compilador no te permitirá, por ejemplo, almacenar un QWidget como valor; en su lugar, almacena un QWidget *.
QVarLengthArray, como QList, proporciona una estructura de datos de array redimensionable. Las principales diferencias entre las dos clases son:
- La API de QVarLengthArray es mucho más de bajo nivel y carece de algunas de las funcionalidades de QList.
- QVarLengthArray no inicializa la memoria si el valor es de tipo básico. (QList siempre lo hace.)
- QList usa compartición implícita como optimización de memoria. QVarLengthArray no proporciona esa característica; sin embargo, normalmente produce un rendimiento ligeramente mejor debido a la reducción de la sobrecarga, especialmente en bucles cerrados.
En resumen, QVarLengthArray es una clase de optimización de bajo nivel que sólo tiene sentido en casos muy específicos. Se utiliza en unos pocos lugares dentro de Qt y se añadió a la API pública de Qt para la comodidad de los usuarios avanzados.
Véase también QList.
Documentación de tipos de miembros
[alias] QVarLengthArray::const_iterator
Typedef para const T *. Proporcionado para la compatibilidad STL.
[alias] QVarLengthArray::const_pointer
Typedef para const T *. Proporcionado para la compatibilidad STL.
[alias] QVarLengthArray::const_reference
Typedef para const T &. Proporcionado por compatibilidad con STL.
[alias] QVarLengthArray::const_reverse_iterator
Typedef para std::reverse_iterator<const T*>. Se proporciona por compatibilidad con STL.
[alias] QVarLengthArray::difference_type
Typedef para ptrdiff_t. Proporcionado para la compatibilidad STL.
[alias] QVarLengthArray::iterator
Typedef para T *. Proporcionado para la compatibilidad STL.
[alias] QVarLengthArray::pointer
Typedef para T *. Proporcionado para la compatibilidad STL.
[alias] QVarLengthArray::reference
Typedef para T &. Proporcionado para compatibilidad STL.
[alias] QVarLengthArray::reverse_iterator
Typedef para std::reverse_iterator<T*>. Se proporciona por compatibilidad con STL.
[alias] QVarLengthArray::size_type
Typedef para int. Se proporciona por compatibilidad con STL.
[alias] QVarLengthArray::value_type
Typedef para T. Proporcionado para compatibilidad con STL.
Documentación de funciones miembro
[noexcept] QVarLengthArray::QVarLengthArray()
Construye una matriz con un tamaño inicial de cero.
[explicit] QVarLengthArray::QVarLengthArray(qsizetype size)
Construye un array con un tamaño inicial de size elementos.
Si el tipo de valor es un tipo primitivo (por ejemplo, char, int, float) o un tipo puntero (por ejemplo, QWidget *), los elementos no se inicializan. Para otros tipos, los elementos se inicializan con un valor construido por defecto.
QVarLengthArray::QVarLengthArray(std::initializer_list<T> args)
Construye un array a partir de la lista std::initializer_list dada por args.
template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray::QVarLengthArray(InputIterator first, InputIterator last)
Construye un array con el contenido en el rango del iterador [first, last).
El tipo de valor de InputIterator debe ser convertible a T.
Restricciones
Participa en la resolución de sobrecargas sólo si InputIterator cumple los requisitos de un LegacyInputIterator.
[explicit, since 6.4] QVarLengthArray::QVarLengthArray(qsizetype size, const T &v)
Construye un array con un tamaño inicial de size elementos lleno de copias de v.
Nota: Este constructor sólo está disponible cuando T es copia-construible.
Esta función se introdujo en Qt 6.4.
Véase también size() y squeeze().
QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
Construye una copia de other.
[noexcept(...), since 6.0] QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other)
Mover-construye esta matriz de longitud variable a partir de other. Después del movimiento, other queda vacío.
Esta función se introdujo en Qt 6.0.
Nota: Esta función es noexcept cuando std::is_nothrow_move_constructible_v<T> es true.
QVarLengthArray::~QVarLengthArray()
Destruye el array.
void QVarLengthArray::append(const T &t)
Añade el elemento t a la matriz, ampliándola si es necesario.
Véase también removeLast().
void QVarLengthArray::append(const T *buf, qsizetype size)
Añade size cantidad de elementos referenciados por buf a esta matriz.
void QVarLengthArray::append(T &&t)
Nota: A diferencia de la sobrecarga lvalue de append(), pasar una referencia a un objeto que ya es un elemento de *this conduce a un comportamiento indefinido:
vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container
Esta función sobrecarga QVarLengthArray::append.
[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(std::initializer_list<T> list)
Sustituye el contenido de este contenedor por una copia de los elementos de list.
El tamaño de este contenedor será igual al número de elementos de list.
Esta función sólo asigna memoria si el número de elementos en list excede la capacidad del contenedor.
Esta función se introdujo en Qt 6.6.
[since 6.6] template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(InputIterator first, InputIterator last)
Sustituye el contenido de este contenedor por una copia de los elementos del rango del iterador [first, last).
El tamaño de este contenedor será igual al número de elementos del rango [first, last). Esta función sólo asignará memoria si el número de elementos del rango excede la capacidad del contenedor.
El comportamiento es indefinido si cualquiera de los argumentos es un iterador dentro de *this.
Restricciones
Participa en la resolución de sobrecargas sólo si InputIterator cumple los requisitos de un LegacyInputIterator.
Esta función se introdujo en Qt 6.6.
[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(qsizetype n, const T &t)
Reemplaza el contenido de este contenedor con n copias de t.
El tamaño de este contenedor será igual a n. Esta función sólo asignará memoria si n excede la capacidad del contenedor.
Esta función se introdujo en Qt 6.6.
const T &QVarLengthArray::at(qsizetype i) const
Devuelve una referencia al elemento en la posición de índice i.
i debe ser una posición de índice válida en la matriz (es decir, 0 <= i < size()).
Véase también value() y operator[]().
T &QVarLengthArray::back()
Igual que last(). Se proporciona por compatibilidad con STL.
const T &QVarLengthArray::back() const
Se trata de una función sobrecargada.
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::begin()
Devuelve un iterador de estilo STL que apunta al primer elemento de la matriz.
Véase también constBegin() y end().
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::begin() const
Se trata de una función sobrecargada.
qsizetype QVarLengthArray::capacity() const
Devuelve el número máximo de elementos que se pueden almacenar en la matriz sin forzar una reasignación.
El único propósito de esta función es proporcionar un medio para ajustar el uso de memoria de QVarLengthArray. En general, rara vez necesitará llamar a esta función. Si desea saber cuántos elementos hay en la matriz, llame a size().
Véase también reserve() y squeeze().
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cbegin() const
Devuelve un iterador const de estilo STL que apunta al primer elemento de la matriz.
Véase también begin() y cend().
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cend() const
Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento de la matriz.
Véase también cbegin() y end().
void QVarLengthArray::clear()
Elimina todos los elementos del array.
Igual que resize(0).
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constBegin() const
Devuelve un iterador const de estilo STL que apunta al primer elemento de la matriz.
Véase también begin() y constEnd().
const T *QVarLengthArray::constData() const
Devuelve un puntero constante a los datos almacenados en la matriz. El puntero puede utilizarse para acceder a los elementos de la matriz. El puntero seguirá siendo válido mientras no se reasigne la matriz.
Esta función es muy útil para pasar un array a una función que acepte un array C++ plano.
Véase también data() y operator[]().
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constEnd() const
Devuelve un iterador const de estilo STL que apunta al elemento imaginario después del último elemento de la matriz.
Véase también constBegin() y end().
template <typename AT = T> bool QVarLengthArray::contains(const AT &value) const
Devuelve true si el array contiene una ocurrencia de value; en caso contrario devuelve false.
Esta función requiere que el tipo de valor tenga una implementación de operator==().
Véase también indexOf() y lastIndexOf().
qsizetype QVarLengthArray::count() const
Igual que size().
Véase también isEmpty() y resize().
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crbegin() const
Devuelve un iterador inverso de estilo const STL que apunta al primer elemento de la matriz de longitud variable, en orden inverso.
Véase también begin(), rbegin() y rend().
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crend() const
Devuelve un iterador inverso de estilo STL que apunta al último elemento de la matriz de longitud variable, en orden inverso.
Véase también end(), rend() y rbegin().
T *QVarLengthArray::data()
Devuelve un puntero a los datos almacenados en la matriz. El puntero puede utilizarse para acceder a los elementos de la matriz y modificarlos.
Ejemplo:
QVarLengthArray<int> array(10); int *data = array.data(); for (int i = 0; i < 10; ++i) data[i] = 2 * i;
El puntero permanece válido mientras el array no sea reasignado.
Esta función es muy útil para pasar un array a una función que acepte un array C++ plano.
Véase también constData() y operator[]().
const T *QVarLengthArray::data() const
Se trata de una función sobrecargada.
[since 6.3] template <typename... Args> QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args)
Inserta un elemento delante del elemento apuntado por el iterador pos, pasando args a su constructor.
Devuelve un iterador apuntando al elemento colocado.
Esta función se introdujo en Qt 6.3.
[since 6.3] template <typename... Args> T &QVarLengthArray::emplace_back(Args &&... args)
Inserta un elemento en la parte posterior de este QVarLengthArray, pasando args a su constructor.
Devuelve una referencia al elemento colocado.
Esta función se introdujo en Qt 6.3.
bool QVarLengthArray::empty() const
Devuelve true si la matriz tiene tamaño 0; en caso contrario devuelve false.
Igual que isEmpty(). Proporcionado por compatibilidad con STL.
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::end()
Devuelve un iterador de estilo STL que apunta al elemento imaginario situado después del último elemento de la matriz.
Véase también begin() y constEnd().
QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::end() const
Se trata de una función sobrecargada.
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator pos)
Elimina del vector el elemento apuntado por el iterador pos, y devuelve un iterador al siguiente elemento del vector (que puede ser end()).
Véase también insert() y remove().
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end)
Elimina todos los elementos de begin hasta (pero sin incluir) end. Devuelve un iterador al mismo elemento al que end hacía referencia antes de la llamada.
Se trata de una función sobrecargada.
T &QVarLengthArray::first()
Devuelve una referencia al primer elemento de la matriz. La matriz no debe estar vacía. Si el array puede estar vacío, compruebe isEmpty() antes de llamar a esta función.
Véase también last() y isEmpty().
const T &QVarLengthArray::first() const
Se trata de una función sobrecargada.
T &QVarLengthArray::front()
Igual que first(). Se proporciona por compatibilidad con STL.
const T &QVarLengthArray::front() const
Se trata de una función sobrecargada.
template <typename AT = T> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const
Devuelve la posición del índice de la primera aparición de value en la matriz, buscando hacia adelante desde la posición del índice from. Devuelve -1 si no aparece ningún elemento.
Esta función requiere que el tipo de valor tenga una implementación de operator==().
Véase también lastIndexOf() y contains().
void QVarLengthArray::insert(qsizetype i, const T &value)
void QVarLengthArray::insert(qsizetype i, T &&value)
Inserta value en la posición de índice i de la matriz. Si i es 0, el valor se añade al vector. Si i es size(), el valor se añade al vector.
Para matrices grandes, esta operación puede ser lenta(tiempo lineal), porque requiere mover todos los elementos en los índices i y superiores una posición más en memoria. Si desea una clase contenedora que proporcione una función rápida insert(), utilice std::list en su lugar.
Véase también remove().
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value)
Inserta count copias de value delante del elemento apuntado por el iterador before. Devuelve un iterador que apunta al primero de los elementos insertados.
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value)
QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value)
Inserta value delante del elemento apuntado por el iterador before. Devuelve un iterador apuntando al elemento insertado.
void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)
Inserta count copias de value en la posición de índice i en el vector.
Se trata de una función sobrecargada.
bool QVarLengthArray::isEmpty() const
Devuelve true si la matriz tiene tamaño 0; en caso contrario devuelve false.
Véase también size() y resize().
T &QVarLengthArray::last()
Devuelve una referencia al último elemento de la matriz. La matriz no debe estar vacía. Si el array puede estar vacío, compruebe isEmpty() antes de llamar a esta función.
Véase también first() y isEmpty().
const T &QVarLengthArray::last() const
Se trata de una función sobrecargada.
template <typename AT = T> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const
Devuelve la posición del índice de la última aparición del valor value en la matriz, buscando hacia atrás desde la posición del índice from. Si from es -1 (por defecto), la búsqueda comienza en el último elemento. Devuelve -1 si no se encuentra ningún elemento.
Esta función requiere que el tipo de valor tenga una implementación de operator==().
Véase también indexOf() y contains().
qsizetype QVarLengthArray::length() const
Igual que size().
Véase también isEmpty() y resize().
[constexpr noexcept, since 6.8] qsizetype QVarLengthArray::max_size() const
[static constexpr noexcept, since 6.8] qsizetype QVarLengthArray::maxSize()
Devuelve el número máximo de elementos que teóricamente puede contener la matriz. En la práctica, el número puede ser mucho menor, limitado por la cantidad de memoria disponible en el sistema.
Estas funciones se introdujeron en Qt 6.8.
void QVarLengthArray::pop_back()
Igual que removeLast(). Se proporciona por compatibilidad con STL.
void QVarLengthArray::push_back(const T &t)
Añade el elemento t a la matriz, ampliándola si es necesario. Se proporciona por compatibilidad con STL.
void QVarLengthArray::push_back(T &&t)
Nota: A diferencia de la sobrecarga lvalue de push_back(), pasar una referencia a un objeto que ya es un elemento de *this conduce a un comportamiento indefinido:
vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container
Esta función sobrecarga QVarLengthArray::push_back.
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rbegin()
Devuelve un iterador inverso de estilo STL que apunta al primer elemento de la matriz de longitud variable, en orden inverso.
Véase también begin(), crbegin() y rend().
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rbegin() const
Se trata de una función sobrecargada.
void QVarLengthArray::remove(qsizetype i, qsizetype count = 1)
Elimina count elementos de la matriz, comenzando en la posición de índice i.
i debe ser una posición de índice válida en la matriz (es decir, 0 <= i < size()). count debe ser <= size() - i. i == size() está permitido si count == 0.
Véase también insert() y replace().
[since 6.1] template <typename AT = T> qsizetype QVarLengthArray::removeAll(const AT &t)
Elimina de la matriz todos los elementos cuya comparación sea igual a t. Devuelve el número de elementos eliminados, si los hay.
Esta función se introdujo en Qt 6.1.
Véase también removeOne().
[since 6.1] template <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)
Elimina del array todos los elementos para los que el predicado pred devuelve verdadero. Devuelve el número de elementos eliminados, si los hay.
Esta función se introdujo en Qt 6.1.
Véase también removeAll().
void QVarLengthArray::removeLast()
Disminuye el tamaño del array en uno. El tamaño asignado no se modifica.
Véase también append().
[since 6.1] template <typename AT = T> bool QVarLengthArray::removeOne(const AT &t)
Elimina de la matriz el primer elemento cuya comparación sea igual a t. Devuelve si un elemento fue, de hecho, eliminado.
Esta función se introdujo en Qt 6.1.
Véase también removeAll().
QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rend()
Devuelve un iterador inverso de estilo STL que apunta al último elemento de la matriz de longitud variable, en orden inverso.
Véase también end(), crend() y rbegin().
QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rend() const
Se trata de una función sobrecargada.
void QVarLengthArray::replace(qsizetype i, const T &value)
Sustituye el elemento en la posición de índice i por value.
i debe ser una posición de índice válida en el array (es decir, 0 <= i < size()).
Véase también operator[]() y remove().
void QVarLengthArray::reserve(qsizetype size)
Intenta asignar memoria para al menos size elementos. Si sabes de antemano lo grande que puede llegar a ser el array, puedes llamar a esta función y si llamas a resize() a menudo, es probable que obtengas un mejor rendimiento. Si size es una subestimación, lo peor que ocurrirá es que QVarLengthArray será un poco más lento.
El único propósito de esta función es proporcionar un medio para afinar el uso de memoria de QVarLengthArray. En general, rara vez necesitará llamar a esta función. Si desea cambiar el tamaño de la matriz, llame a resize().
Véase también capacity() y squeeze().
void QVarLengthArray::resize(qsizetype size)
Establece el tamaño de la matriz en size. Si size es mayor que el tamaño actual, se añaden elementos al final. Si size es menor que el tamaño actual, se eliminan elementos del final.
Si el tipo de valor es un tipo primitivo (por ejemplo, char, int, float) o un tipo puntero (por ejemplo, QWidget *), los nuevos elementos no se inicializan. Para otros tipos, los elementos se inicializan con un valor construido por defecto.
Véase también size() y squeeze().
[since 6.4] void QVarLengthArray::resize(qsizetype size, const T &v)
Establece el tamaño de la matriz en size. Si size es mayor que el tamaño actual, se añaden copias de v al final. Si size es menor que el tamaño actual, se eliminan elementos del final.
Nota: Esta función sólo está disponible cuando T es copia-construible.
Esta función se introdujo en Qt 6.4.
Véase también size() y squeeze().
void QVarLengthArray::shrink_to_fit()
Igual que squeeze(). Se proporciona por compatibilidad con STL.
qsizetype QVarLengthArray::size() const
Devuelve el número de elementos de la matriz.
Véase también isEmpty() y resize().
void QVarLengthArray::squeeze()
Libera la memoria que no sea necesaria para almacenar los elementos. Si el contenedor puede encajar su almacenamiento en la asignación de la pila, liberará la asignación de la pila y copiará los elementos de nuevo a la pila.
El único propósito de esta función es proporcionar un medio para ajustar el uso de memoria de QVarLengthArray. En general, rara vez necesitará llamar a esta función.
Véase también reserve(), capacity(), y resize().
T QVarLengthArray::value(qsizetype i) const
Devuelve el valor en la posición del índice i.
Si el índice i está fuera de los límites, la función devuelve un valor construido por defecto. Si está seguro de que i está dentro de los límites, puede utilizar at() en su lugar, que es ligeramente más rápido.
Véase también at() y operator[]().
T QVarLengthArray::value(qsizetype i, const T &defaultValue) const
Si el índice i está fuera de los límites, la función devuelve defaultValue.
Se trata de una función sobrecargada.
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)
Añade value a la matriz y devuelve una referencia a este vector.
Véase también append() y operator<<().
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)
Se trata de una función sobrecargada.
Véase también append() y operator<<().
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)
Añade value a la matriz y devuelve una referencia a este vector.
Véase también append() y operator+=().
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)
Se trata de una función sobrecargada.
Véase también append() y operator+=().
[noexcept(...), since 6.0] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other)
Mueve-asigna other a este array y devuelve una referencia a este array. Después del movimiento, other está vacío.
Esta función se introdujo en Qt 6.0.
Nota: Esta función es noexcept cuando std::is_nothrow_move_constructible_v<T> es true.
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)
Asigna other a este array y devuelve una referencia a este array.
QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)
Asigna los valores de list a este array, y devuelve una referencia a este array.
T &QVarLengthArray::operator[](qsizetype i)
Devuelve una referencia al elemento en la posición de índice i.
i debe ser una posición de índice válida en la matriz (es decir, 0 <= i < size()).
const T &QVarLengthArray::operator[](qsizetype i) const
Se trata de una función sobrecargada.
No miembros relacionados
[since 6.1] template <
typename T,
qsizetype Prealloc,
typename AT
>
qsizetype erase(QVarLengthArray<T, Prealloc> &array, const AT &t)
Elimina todos los elementos que se comparan igual a t de la matriz array. Devuelve el número de elementos eliminados, si los hay.
Nota: No se permite quet sea una referencia a un elemento dentro de array. Si no puede estar seguro de que este no es el caso, tome una copia de t y llame a esta función con la copia.
Esta función se introdujo en Qt 6.1.
Véase también erase_if().
[since 6.1] template <
typename T,
qsizetype Prealloc,
typename Predicate
>
qsizetype erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred)
Elimina todos los elementos para los que el predicado pred devuelve verdadero de la lista array. Devuelve el número de elementos eliminados, si los hay.
Esta función se introdujo en Qt 6.1.
Véase también erase().
[noexcept(...)] template <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
El tipo T debe estar soportado por qHash().
Nota: Esta función es noexcept cuando QtPrivate::QNothrowHashable_v<T> es true.
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
Devuelve true si las dos matrices, especificadas por left y right, no son iguales.
Dos matrices se consideran iguales si contienen los mismos valores en el mismo orden.
Esta función requiere que el tipo de valor tenga una implementación de operator==().
Véase también operator==().
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
Devuelve true si la matriz de longitud variable lhs es lexicográficamente menor que rhs; en caso contrario devuelve false.
Esta función requiere que el tipo de valor tenga una implementación de operator<().
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
Devuelve true si la matriz de longitud variable lhs es lexicográficamente menor o igual que rhs; en caso contrario devuelve false.
Esta función requiere que el tipo de valor tenga una implementación de operator<().
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)
Devuelve true si las dos matrices, especificadas por left y right, son iguales.
Dos matrices se consideran iguales si contienen los mismos valores en el mismo orden.
Esta función requiere que el tipo de valor tenga una implementación de operator==().
Véase también operator!=().
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
Devuelve true si la matriz de longitud variable lhs es lexicográficamente mayor que rhs; en caso contrario devuelve false.
Esta función requiere que el tipo de valor tenga una implementación de operator<().
template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)
Devuelve true si la matriz de longitud variable lhs es lexicográficamente mayor o igual que rhs; en caso contrario devuelve false.
Esta función requiere que el tipo de valor tenga una implementación de operator<().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.