Sur cette page

QVarLengthArray Class

template <typename T, qsizetype Prealloc> class QVarLengthArray

La classe QVarLengthArray fournit un tableau de longueur variable de bas niveau. En savoir plus...

En-tête : #include <QVarLengthArray>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Hérite de : QVLABase et QVLAStorage

Remarque : toutes les fonctions de cette classe sont réentrantes.

Types publics

Fonctions publiques

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.12) void removeAt(qsizetype i)
(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

Membres publics statiques

(since 6.8) qsizetype maxSize()
(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)

Description détaillée

Le langage C++ ne prend pas en charge les tableaux de longueur variable sur la pile. Par exemple, le code suivant ne se compilera pas :

int myfunc_wrong(int n)
{
    int table[n + 1];  // WRONG
    //...
    return table[n];
}

L'alternative consiste à allouer le tableau sur le tas (avec ` new`) :

int myfunc_correct(int n)
{
    int *table = new int[n + 1];
    //...
    int ret = table[n];
    delete[] table;
    return ret;
}

Cependant, si la fonction myfunc() est appelée très fréquemment depuis la boucle interne de l'application, l'allocation sur le tas peut constituer une source majeure de ralentissement.

QVarLengthArray vise à pallier cette lacune du langage C++. Il alloue un certain nombre d'éléments sur la pile, et si vous redimensionnez le tableau pour lui attribuer une taille supérieure, il utilise automatiquement le tas à la place. L'allocation sur la pile présente l'avantage d'être bien plus rapide que l'allocation sur le tas.

Exemple :

int myfunc_q(int n)
{
    QVarLengthArray<int, 1024> array(n + 1);
    //...
    return array[n];
}

Dans l’exemple ci-dessus, QVarLengthArray préallouera 1 024 éléments sur la pile et les utilisera à moins que la valeur de ` n + 1 ` ne soit supérieure à 1 024. Le paramètre de modèle ` T ` spécifie le type d’élément et ` Prealloc ` précise le nombre d’éléments à préallouer sur la pile ; s’il est omis, ` Prealloc ` prend par défaut la valeur 256.

Le type de valeur de `QVarLengthArray` doit être un type de données assignable. Cela couvre la plupart des types de données couramment utilisés, mais le compilateur ne vous permettra pas, par exemple, de stocker un ` QWidget ` en tant que valeur ; vous devrez plutôt stocker un ` QWidget *`.

QVarLengthArray, tout comme QList, fournit une structure de données de type tableau redimensionnable. Les principales différences entre les deux classes sont les suivantes :

  • L'API de `QVarLengthArray` est beaucoup plus basique et ne dispose pas de certaines fonctionnalités de ` QList`.
  • QVarLengthArray n’initialise pas la mémoire si la valeur est d’un type de base. (QList le fait toujours.)
  • QList xml-ph-0000@deepl.internal utilise le partage implicite comme optimisation mémoire. QVarLengthArray ne propose pas cette fonctionnalité ; cependant, elle offre généralement des performances légèrement supérieures grâce à une surcharge réduite, en particulier dans les boucles serrées.

En résumé, QVarLengthArray est une classe d’optimisation de bas niveau qui n’a de sens que dans des cas très spécifiques. Elle est utilisée à quelques endroits au sein de Qt et a été ajoutée à l’API publique de Qt pour faciliter la tâche des utilisateurs avancés.

Voir également QList.

Documentation sur les types de membres

[alias] QVarLengthArray::const_iterator

Définition de type pour `const T *`. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::const_pointer

Définition de type pour const T *. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::const_reference

Définition de type pour `const T &`. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::const_reverse_iterator

Définition de type pour ` std::reverse_iterator<const T*>`. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::difference_type

Définition de type pour ptrdiff_t. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::iterator

Définition de type pour T*. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::pointer

Définition de type pour T *. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::reference

Définition de type pour T &. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::reverse_iterator

Définition de type pour ` std::reverse_iterator<T*>`. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::size_type

Définition de type pour `int`. Fournie à des fins de compatibilité avec la STL.

[alias] QVarLengthArray::value_type

Définition de type pour T. Fournie à des fins de compatibilité avec la STL.

Documentation des fonctions membres

[noexcept] QVarLengthArray::QVarLengthArray()

Crée un tableau dont la taille initiale est égale à zéro.

[explicit] QVarLengthArray::QVarLengthArray(qsizetype size)

Crée un tableau d'une taille initiale de size éléments.

Si le type de valeur est un type primitif (par exemple, char, int, float) ou un type pointeur (par exemple, QWidget *), les éléments ne sont pas initialisés. Pour les autres types, les éléments sont initialisés avec une valeur construite par défaut.

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

Crée un tableau à partir de la liste d'initialisation std::initializer_list fournie par args.

template <typename InputIterator, QVarLengthArray<T, Prealloc>::if_input_iterator<InputIterator> = true> QVarLengthArray::QVarLengthArray(InputIterator first, InputIterator last)

Crée un tableau contenant les éléments de la plage de l'itérateur [first, last).

Le type de valeur de InputIterator doit être convertible en T.

Contraintes

Ne participe à la résolution des surcharges que si InputIterator répond aux exigences d’un LegacyInputIterator.

[explicit, since 6.4] QVarLengthArray::QVarLengthArray(qsizetype size, const T &v)

Construit un tableau d'une taille initiale de size éléments, rempli avec des copies de v.

Remarque : ce constructeur n'est disponible que si T est constructible par copie.

Cette fonction a été introduite dans Qt 6.4.

Voir également size() et squeeze().

QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)

Crée une copie de other.

[noexcept(...), since 6.0] QVarLengthArray::QVarLengthArray(QVarLengthArray<T, Prealloc> &&other)

Cette fonction crée par déplacement ce tableau de longueur variable à partir de other. Une fois le déplacement effectué, other est vide.

Cette fonction a été introduite dans Qt 6.0.

Remarque : cette fonction est de type « noexcept » lorsque std::is_nothrow_move_constructible_v<T> est égal à true.

QVarLengthArray::~QVarLengthArray()

Supprime le tableau.

void QVarLengthArray::append(const T &t)

Ajoute l'élément t au tableau, en agrandissant celui-ci si nécessaire.

Voir également removeLast().

void QVarLengthArray::append(const T *buf, qsizetype size)

Ajoute à ce tableau le nombre d'éléments indiqué par size et référencés par buf.

void QVarLengthArray::append(T &&t)

Remarque : contrairement à la surcharge en lvalue de la fonction `append()`, le fait de passer une référence à un objet qui fait déjà partie de ` *this ` entraîne un comportement indéfini :

vla.append(std::move(vla[0])); // BUG: passing an object that is already in the container

Cette fonction surcharge la fonction ` QVarLengthArray::append`.

[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(std::initializer_list<T> list)

Remplace le contenu de ce conteneur par une copie des éléments de list.

La taille de ce conteneur sera égale au nombre d'éléments contenus dans list.

Cette fonction n'alloue de la mémoire que si le nombre d'éléments de list dépasse la capacité du conteneur.

Cette fonction a été introduite dans 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)

Remplace le contenu de ce conteneur par une copie des éléments de l'intervalle de l'itérateur [first, last).

La taille de ce conteneur sera égale au nombre d’éléments de l’intervalle [first, last). Cette fonction n’allouera de mémoire que si le nombre d’éléments de l’intervalle dépasse la capacité du conteneur.

Le comportement est indéfini si l’un des deux arguments est un itérateur pointant vers *this.

Contraintes

Ne participe à la résolution des surcharges que si InputIterator répond aux exigences d’un LegacyInputIterator.

Cette fonction a été introduite dans Qt 6.6.

[since 6.6] QVarLengthArray<T, Prealloc> &QVarLengthArray::assign(qsizetype n, const T &t)

Remplace le contenu de ce conteneur par n copies de t.

La taille de ce conteneur sera égale à n. Cette fonction n'allouera de la mémoire que si n dépasse la capacité du conteneur.

Cette fonction a été introduite dans Qt 6.6.

const T &QVarLengthArray::at(qsizetype i) const

Renvoie une référence à l'élément situé à l'index i.

i i doit être une position d'index valide dans le tableau (c'est-à-dire 0 <= < ()). size

Voir également value() et operator[]().

T &QVarLengthArray::back()

Identique à ` last()`. Fournie pour assurer la compatibilité avec la STL.

const T &QVarLengthArray::back() const

Il s'agit d'une fonction surchargée.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::begin()

Renvoie un itérateur de type STL pointant vers le premier élément du tableau.

Voir également constBegin() et end().

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::begin() const

Il s'agit d'une fonction surchargée.

qsizetype QVarLengthArray::capacity() const

Renvoie le nombre maximal d'éléments pouvant être stockés dans le tableau sans nécessiter de réallocation.

Cette fonction a pour seul but de permettre d'ajuster avec précision l'utilisation de la mémoire par QVarLengthArray. En général, vous n'aurez que très rarement besoin d'appeler cette fonction. Si vous souhaitez connaître le nombre d'éléments contenus dans le tableau, appelez size().

Voir également reserve() et squeeze().

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cbegin() const

Renvoie un itérateur de type STL constant pointant vers le premier élément du tableau.

Voir également begin() et cend().

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::cend() const

Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément du tableau.

Voir également cbegin() et end().

void QVarLengthArray::clear()

Supprime tous les éléments du tableau.

Equivalent à resize(0).

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constBegin() const

Renvoie un itérateur constant de type STL pointant vers le premier élément du tableau.

Voir également begin() et constEnd().

const T *QVarLengthArray::constData() const

Renvoie un pointeur `const` vers les données stockées dans le tableau. Ce pointeur permet d'accéder aux éléments du tableau. Il reste valide tant que le tableau n'est pas réalloué.

Cette fonction est particulièrement utile pour passer un tableau à une fonction qui accepte un tableau C++ standard.

Voir également data() et operator[]().

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::constEnd() const

Renvoie un itérateur de type STL (const) pointant vers l'élément imaginaire situé après le dernier élément du tableau.

Voir également constBegin() et end().

template <typename AT = T> bool QVarLengthArray::contains(const AT &value) const

Renvoie ` true ` si le tableau contient une occurrence de ` value` ; sinon, renvoie ` false`.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de ` operator==()`.

Voir également indexOf() et lastIndexOf().

qsizetype QVarLengthArray::count() const

Identique à size().

Voir également isEmpty() et resize().

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crbegin() const

Renvoie un itérateur inversé de type STL (const) pointant vers le premier élément du tableau de longueur variable, dans l'ordre inverse.

Voir également begin(), rbegin() et rend().

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::crend() const

Renvoie un itérateur inversé de type STL (const) pointant sur l'élément suivant le dernier élément du tableau de longueur variable, dans l'ordre inverse.

Voir également end(), rend() et rbegin().

T *QVarLengthArray::data()

Renvoie un pointeur vers les données stockées dans le tableau. Ce pointeur permet d'accéder aux éléments du tableau et de les modifier.

Exemple :

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

Le pointeur reste valide tant que le tableau n'est pas réalloué.

Cette fonction est particulièrement utile pour passer un tableau à une fonction qui accepte un tableau C++ standard.

Voir également constData() et operator[]().

const T *QVarLengthArray::data() const

Il s'agit d'une fonction surchargée.

[since 6.3] template <typename... Args> QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::emplace(QVarLengthArray<T, Prealloc>::const_iterator pos, Args &&... args)

Insère un élément devant l'élément pointé par l'itérateur pos, en transmettant args à son constructeur.

Renvoie un itérateur pointant vers l'élément inséré.

Cette fonction a été introduite dans Qt 6.3.

[since 6.3] template <typename... Args> T &QVarLengthArray::emplace_back(Args &&... args)

Insère un élément à la fin de cette liste QVarLengthArray, en transmettant args à son constructeur.

Renvoie une référence à l'élément inséré.

Cette fonction a été introduite dans Qt 6.3.

bool QVarLengthArray::empty() const

Renvoie ` true ` si la taille du tableau est égale à 0 ; sinon, renvoie ` false`.

Identique à ` isEmpty()`. Fournie pour des raisons de compatibilité avec la STL.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::end()

Renvoie un itérateur de type STL pointant vers l'élément imaginaire situé après le dernier élément du tableau.

Voir également begin() et constEnd().

QVarLengthArray<T, Prealloc>::const_iterator QVarLengthArray::end() const

Il s'agit d'une fonction surchargée.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator pos)

Supprime de l'élément pointé par l'itérateur pos du vecteur, et renvoie un itérateur vers l'élément suivant du vecteur (qui peut être end()).

Voir également insert() et remove().

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::erase(QVarLengthArray<T, Prealloc>::const_iterator begin, QVarLengthArray<T, Prealloc>::const_iterator end)

Supprime tous les éléments compris entre begin et end(ce dernier n'étant pas inclus). Renvoie un itérateur pointant vers le même élément que celui auquel end faisait référence avant l'appel.

Il s'agit d'une fonction surchargée.

T &QVarLengthArray::first()

Renvoie une référence au premier élément du tableau. Le tableau ne doit pas être vide. Si le tableau peut être vide, vérifiez isEmpty() avant d'appeler cette fonction.

Voir également last() et isEmpty().

const T &QVarLengthArray::first() const

Il s'agit d'une fonction surchargée.

T &QVarLengthArray::front()

Identique à ` first()`. Fournie pour assurer la compatibilité avec la STL.

const T &QVarLengthArray::front() const

Il s'agit d'une fonction surchargée.

template <typename AT = T> qsizetype QVarLengthArray::indexOf(const AT &value, qsizetype from = 0) const

Renvoie l'index de la première occurrence de ` value ` dans le tableau, en effectuant la recherche vers l'avant à partir de l'index ` from`. Renvoie -1 si aucun élément ne correspond.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de la méthode ` operator==()`.

Voir également ` lastIndexOf()` et ` contains()`.

void QVarLengthArray::insert(qsizetype i, T &&value)

void QVarLengthArray::insert(qsizetype i, const T &value)

Insère value à l'index i dans le tableau. Si i vaut 0, la valeur est ajoutée au début du vecteur. Si i vaut size(), la valeur est ajoutée à la fin du vecteur.

Pour les grands tableaux, cette opération peut être lente (temps linéaire), car elle nécessite de déplacer d’une position vers l’avant en mémoire tous les éléments situés aux indices i et au-delà. Si vous souhaitez une classe de conteneur fournissant une fonction insert() rapide, utilisez plutôt std::list.

Voir également remove().

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, qsizetype count, const T &value)

Insère count exemplaires de value devant l'élément pointé par l'itérateur before. Renvoie un itérateur pointant vers le premier des éléments insérés.

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, T &&value)

QVarLengthArray<T, Prealloc>::iterator QVarLengthArray::insert(QVarLengthArray<T, Prealloc>::const_iterator before, const T &value)

Insère value devant l'élément pointé par l'itérateur before. Renvoie un itérateur pointant vers l'élément inséré.

void QVarLengthArray::insert(qsizetype i, qsizetype count, const T &value)

Insère count copies de value à la position d'index i dans le vecteur.

Il s'agit d'une fonction surchargée.

bool QVarLengthArray::isEmpty() const

Renvoie « true » si le tableau a une taille de 0 ; sinon, renvoie « false ».

Voir également size() et resize().

T &QVarLengthArray::last()

Renvoie une référence au dernier élément du tableau. Le tableau ne doit pas être vide. Si le tableau peut être vide, vérifiez isEmpty() avant d'appeler cette fonction.

Voir également first() et isEmpty().

const T &QVarLengthArray::last() const

Il s'agit d'une fonction surchargée.

template <typename AT = T> qsizetype QVarLengthArray::lastIndexOf(const AT &value, qsizetype from = -1) const

Renvoie l'index de la dernière occurrence de la valeur value dans le tableau, en effectuant une recherche à rebours à partir de l'index from. Si from vaut -1 (valeur par défaut), la recherche commence à partir du dernier élément. Renvoie -1 si aucun élément ne correspond.

Cette fonction nécessite que le type de la valeur dispose d’une implémentation de la méthode operator==().

Voir également indexOf() et contains().

qsizetype QVarLengthArray::length() const

Identique à size().

Voir également isEmpty() et resize().

[static constexpr noexcept, since 6.8] qsizetype QVarLengthArray::maxSize()

[constexpr noexcept, since 6.8] qsizetype QVarLengthArray::max_size() const

Elle renvoie le nombre maximal d'éléments que le tableau peut théoriquement contenir. En pratique, ce nombre peut être bien inférieur, car il est limité par la quantité de mémoire disponible sur le système.

Ces fonctions ont été introduites dans Qt 6.8.

void QVarLengthArray::pop_back()

Identique à ` removeLast()`. Fournie à des fins de compatibilité avec la STL.

void QVarLengthArray::push_back(const T &t)

Ajoute l'élément t au tableau, en agrandissant celui-ci si nécessaire. Fournie pour assurer la compatibilité avec la STL.

void QVarLengthArray::push_back(T &&t)

Remarque : contrairement à la surcharge lvalue de la fonction `push_back()`, le fait de passer une référence à un objet qui fait déjà partie de ` *this ` entraîne un comportement indéfini :

vla.push_back(std::move(vla[0])); // BUG: passing an object that is already in the container

Cette fonction surcharge ` QVarLengthArray::push_back`.

QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rbegin()

Renvoie un itérateur inversé de type STL pointant vers le premier élément du tableau à longueur variable, dans l'ordre inverse.

Voir également begin(), crbegin() et rend().

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rbegin() const

Il s'agit d'une fonction surchargée.

void QVarLengthArray::remove(qsizetype i, qsizetype count = 1)

Supprime les éléments count du tableau, à partir de l'index i.

i doit être un indice valide dans le tableau (c'est-à-dire 0 <= i < size()). count doit être <= size() - i. i == size() est autorisé si count == 0.

Voir également insert() et replace().

[since 6.1] template <typename AT = T> qsizetype QVarLengthArray::removeAll(const AT &t)

Supprime du tableau tous les éléments dont la valeur est égale à « t ». Renvoie le nombre d'éléments supprimés, le cas échéant.

Cette fonction a été introduite dans Qt 6.1.

Voir également removeOne().

[since 6.12] void QVarLengthArray::removeAt(qsizetype i)

Supprime l'élément situé à l'index i du tableau.

i i doit être un indice valide dans le tableau (c'est-à-dire 0 <= < ()). size

Cette fonction est fournie à des fins de compatibilité avec QList.

Cette fonction a été introduite dans Qt 6.12.

Voir également insert() et replace().

[since 6.1] template <typename Predicate> qsizetype QVarLengthArray::removeIf(Predicate pred)

Supprime du tableau tous les éléments pour lesquels le prédicat pred renvoie « vrai ». Renvoie le nombre d'éléments supprimés, le cas échéant.

Cette fonction a été introduite dans Qt 6.1.

Voir aussi removeAll().

void QVarLengthArray::removeLast()

Réduit la taille du tableau d'une unité. La taille allouée reste inchangée.

Voir aussi append().

[since 6.1] template <typename AT = T> bool QVarLengthArray::removeOne(const AT &t)

Supprime du tableau le premier élément dont la valeur est égale à « t ». Renvoie un indicateur précisant si un élément a effectivement été supprimé.

Cette fonction a été introduite dans Qt 6.1.

Voir également removeAll().

QVarLengthArray<T, Prealloc>::reverse_iterator QVarLengthArray::rend()

Renvoie un itérateur inversé de type STL pointant sur l'élément situé juste après le dernier élément du tableau à longueur variable, dans l'ordre inverse.

Voir également end(), crend() et rbegin().

QVarLengthArray<T, Prealloc>::const_reverse_iterator QVarLengthArray::rend() const

Il s'agit d'une fonction surchargée.

void QVarLengthArray::replace(qsizetype i, const T &value)

Remplace l'élément situé à l'index i par value.

i doit être une position d'index valide dans le tableau (c'est-à-dire 0 <= i < size()).

Voir également operator[]() et remove().

void QVarLengthArray::reserve(qsizetype size)

Tente d’allouer de la mémoire pour au moins size éléments. Si vous connaissez à l’avance la taille maximale que peut atteindre le tableau, vous pouvez appeler cette fonction ; si vous appelez souvent resize(), vous obtiendrez probablement de meilleures performances. Si size est sous-estimé, le pire qui puisse arriver est que QVarLengthArray soit légèrement plus lent.

Le seul objectif de cette fonction est de permettre d’ajuster avec précision l’utilisation de la mémoire par QVarLengthArray. En général, vous n’aurez que très rarement besoin d’appeler cette fonction. Si vous souhaitez modifier la taille du tableau, appelez resize().

Voir également capacity() et squeeze().

void QVarLengthArray::resize(qsizetype size)

Définit la taille du tableau sur ` size`. Si ` size ` est supérieure à la taille actuelle, des éléments sont ajoutés à la fin. Si ` size ` est inférieure à la taille actuelle, des éléments sont supprimés à la fin.

Si le type de la valeur est un type primitif (par exemple, char, int, float) ou un type pointeur (par exemple, QWidget *), les nouveaux éléments ne sont pas initialisés. Pour les autres types, les éléments sont initialisés avec une valeur construite par défaut.

Voir également size() et squeeze().

[since 6.4] void QVarLengthArray::resize(qsizetype size, const T &v)

Définit la taille du tableau sur ` size`. Si ` size ` est supérieure à la taille actuelle, des copies de ` v ` sont ajoutées à la fin. Si ` size ` est inférieure à la taille actuelle, des éléments sont supprimés à la fin.

Remarque : cette fonction n'est disponible que si T est constructible par copie.

Cette fonction a été introduite dans Qt 6.4.

Voir également size() et squeeze().

void QVarLengthArray::shrink_to_fit()

Identique à ` squeeze()`. Fourni pour assurer la compatibilité avec la STL.

qsizetype QVarLengthArray::size() const

Renvoie le nombre d'éléments du tableau.

Voir également isEmpty() et resize().

void QVarLengthArray::squeeze()

Libère toute la mémoire qui n'est pas nécessaire au stockage des éléments. Si le conteneur peut faire tenir son contenu dans l'allocation de la pile, il libère l'allocation du tas et recopie les éléments dans la pile.

Le seul but de cette fonction est de permettre un réglage fin de l’utilisation de la mémoire par QVarLengthArray. En général, vous n’aurez que très rarement besoin d’appeler cette fonction.

Voir également reserve(), capacity() et resize().

T QVarLengthArray::value(qsizetype i) const

Renvoie la valeur située à l'index i.

Si l'index i est hors limites, la fonction renvoie une valeur construite par défaut. Si vous êtes certain que i se trouve dans les limites, vous pouvez utiliser at() à la place, ce qui est légèrement plus rapide.

Voir également at() et operator[]().

T QVarLengthArray::value(qsizetype i, const T &defaultValue) const

Si l'index i est hors limites, la fonction renvoie defaultValue.

Il s'agit d'une fonction surchargée.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(const T &value)

Ajoute value au tableau et renvoie une référence à ce vecteur.

Voir également append() et operator<<().

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator+=(T &&value)

Il s'agit d'une fonction surchargée.

Voir également append() et operator<<().

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(const T &value)

Ajoute value au tableau et renvoie une référence à ce vecteur.

Voir également append() et operator+=().

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator<<(T &&value)

Il s'agit d'une fonction surchargée.

Voir également append() et operator+=().

[noexcept(...), since 6.0] QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(QVarLengthArray<T, Prealloc> &&other)

La fonction « move-assign » attribue ` other ` à ce tableau et renvoie une référence à ce dernier. Une fois le déplacement effectué, ` other ` est vide.

Cette fonction a été introduite dans Qt 6.0.

Remarque : cette fonction est de type `noexcept` lorsque ` std::is_nothrow_move_constructible_v<T> ` est ` true`.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)

Attribue la valeur « other » à ce tableau et renvoie une référence à ce tableau.

QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(std::initializer_list<T> list)

Attribue les valeurs de ` list ` à ce tableau et renvoie une référence à ce tableau.

T &QVarLengthArray::operator[](qsizetype i)

Renvoie une référence à l'élément situé à l'index i.

i i doit être une position d'index valide dans le tableau (c'est-à-dire 0 <= < ()). size

Voir également data() et at().

const T &QVarLengthArray::operator[](qsizetype i) const

Il s'agit d'une fonction surchargée.

Éléments non membres associés

[since 6.1] template < typename T, qsizetype Prealloc, typename AT > qsizetype erase(QVarLengthArray<T, Prealloc> &array, const AT &t)

Supprime tous les éléments de la liste array qui sont égaux à t. Renvoie le nombre d'éléments supprimés, le cas échéant.

Remarque : t ne doit pas être une référence à un élément contenu dans array. Si vous n’êtes pas certain que ce ne soit pas le cas, effectuez une copie de t et appelez cette fonction avec cette copie.

Cette fonction a été introduite dans Qt 6.1.

Voir également erase_if().

[since 6.1] template < typename T, qsizetype Prealloc, typename Predicate > qsizetype erase_if(QVarLengthArray<T, Prealloc> &array, Predicate pred)

Supprime de la liste array tous les éléments pour lesquels le prédicat pred renvoie « true ». Renvoie le nombre d'éléments supprimés, le cas échéant. La taille de préallocation Prealloc n'a aucune incidence sur l'opération.

Cette fonction a été introduite dans Qt 6.1.

Voir également erase().

[noexcept(...)] template <typename T, qsizetype Prealloc> size_t qHash(const QVarLengthArray<T, Prealloc> &key, size_t seed = 0)

Renvoie la valeur de hachage de ` key`, en utilisant ` seed ` comme graine pour le calcul.

Le type T doit être pris en charge par qHash().

Renvoie la valeur de hachage de key, en utilisant seed comme graine pour le calcul. La taille de préallocation Prealloc n’affecte pas le hachage.

Remarque : cette fonction est `noexcept` lorsque ` QtPrivate::QNothrowHashable_v<T> ` est ` true`.

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator!=(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)

Renvoie « true » si les deux tableaux, spécifiés par left et right, ne sont pas égaux. Les tailles préallouées Prealloc1 et Prealloc2 peuvent différer.

Deux tableaux sont considérés comme égaux s’ils contiennent les mêmes valeurs dans le même ordre.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de la méthode operator==().

Voir également operator==().

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator<(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

Renvoie ` true ` si le tableau à longueur variable ` lhs ` est lexicalement inférieur à ` rhs` ; sinon, renvoie ` false`. Les tailles préallouées ` Prealloc1 ` et ` Prealloc2 ` peuvent différer.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de operator<().

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator<=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

Renvoie true si le tableau à longueur variable lhs est lexicalement inférieur ou égal à rhs; sinon, renvoie false. Les tailles préallouées Prealloc1 et Prealloc2 peuvent différer.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de operator<().

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator==(const QVarLengthArray<T, Prealloc1> &left, const QVarLengthArray<T, Prealloc2> &right)

Renvoie true si les deux tableaux, spécifiés par left et right, sont égaux. Les tailles préallouées Prealloc1 et Prealloc2 peuvent différer.

Deux tableaux sont considérés comme égaux s’ils contiennent les mêmes valeurs dans le même ordre.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de operator==().

Voir également operator!=().

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator>(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

Renvoie ` true ` si le tableau de longueur variable ` lhs ` est lexicographiquement supérieur à ` rhs` ; sinon, renvoie ` false`. Les tailles préallouées ` Prealloc1 ` et ` Prealloc2 ` peuvent différer.

Cette fonction nécessite que le type de valeur dispose d’une implémentation de operator<().

template < typename T, qsizetype Prealloc1, qsizetype Prealloc2 > bool operator>=(const QVarLengthArray<T, Prealloc1> &lhs, const QVarLengthArray<T, Prealloc2> &rhs)

Renvoie ` true ` si le tableau de longueur variable ` lhs ` est lexicalement supérieur ou égal à ` rhs` ; sinon, renvoie ` false`. Les tailles préallouées ` Prealloc1 ` et ` Prealloc2 ` peuvent différer.

Cette fonction nécessite que le type de valeur dispose d’une implémentation 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.