Sur cette page

QVarLengthArray Class

template <typename T, qsizetype Prealloc = QVarLengthArrayDefaultPrealloc> class QVarLengthArray

La classe QVarLengthArray fournit un tableau de longueur variable de bas niveau. Plus d'informations...

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

Note : 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.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 sera pas compilé :

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

L'alternative est d'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 myfunc() est appelé très fréquemment à partir de la boucle interne de l'application, l'allocation au tas peut être une source majeure de ralentissement.

QVarLengthArray est une tentative de contourner cette lacune du langage C++. Il alloue un certain nombre d'éléments sur la pile, et si vous redimensionnez le tableau à une taille supérieure, il utilise automatiquement le tas à la place. L'allocation sur la pile présente l'avantage d'être beaucoup 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 1024 éléments sur la pile et les utilisera à moins que n + 1 ne soit supérieur à 1024. Si vous omettez le deuxième argument du modèle, la valeur par défaut de QVarLengthArray, à savoir 256, est utilisée.

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 laissera pas, par exemple, stocker un QWidget comme valeur ; stockez plutôt un QWidget *.

QVarLengthArray, 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 basse et il lui manque certaines des fonctionnalités de QList.
  • QVarLengthArray n'initialise pas la mémoire si la valeur est un type de base. (QList le fait toujours.)
  • QList utilise le partage implicite pour optimiser la mémoire. QVarLengthArray n'offre pas cette fonctionnalité ; cependant, il produit généralement des performances légèrement supérieures en raison de la réduction des frais généraux, 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 dans Qt et a été ajoutée à l'API publique de Qt pour la commodité des utilisateurs avancés.

Voir également QList.

Documentation sur les types de membres

[alias] QVarLengthArray::const_iterator

Typedef pour const T *. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::const_pointer

Typedef pour const T *. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::const_reference

Typedef pour const T &. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::const_reverse_iterator

Typedef pour std::reverse_iterator<const T*>. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::difference_type

Typedef pour ptrdiff_t. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::iterator

Typedef pour T *. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::pointer

Typedef pour T *. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::reference

Typedef pour T &. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::reverse_iterator

Typedef pour std::reverse_iterator<T*>. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::size_type

Typedef pour int. Fourni pour la compatibilité STL.

[alias] QVarLengthArray::value_type

Typedef pour T. Fourni pour la compatibilité STL.

Documentation sur les fonctions membres

[noexcept] QVarLengthArray::QVarLengthArray()

Construit un tableau dont la taille initiale est zéro.

[explicit] QVarLengthArray::QVarLengthArray(qsizetype size)

Construit un tableau avec une taille initiale de size éléments.

Si le type de valeur est un type primitif (par exemple, char, int, float) ou un type de 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)

Construit un tableau à partir de la std::initializer_list donnée par args.

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

Construit un tableau dont le contenu se trouve dans l'intervalle de l'itérateur [first, last).

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

Contraintes

Participe à la résolution des surcharges uniquement si InputIterator répond aux exigences d'un LegacyInputIterator.

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

Construit un tableau avec une taille initiale de size éléments remplis avec des copies de v.

Note : Ce constructeur n'est disponible que si T est constructible par copie.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi size() et squeeze().

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

Construit une copie de other.

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

Move-construit ce tableau de longueur variable à partir de other. Après le déplacement, other est vide.

Cette fonction a été introduite dans Qt 6.0.

Note : Cette fonction est noexcept lorsque std::is_nothrow_move_constructible_v<T> est true.

QVarLengthArray::~QVarLengthArray()

Détruit le tableau.

void QVarLengthArray::append(const T &t)

Ajoute l'élément t au tableau, en l'étendant si nécessaire.

Voir également removeLast().

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

Ajoute à ce tableau size le montant des éléments référencés par buf.

void QVarLengthArray::append(T &&t)

Note : Contrairement à la surcharge lvalue de append(), le fait de passer une référence à un objet qui est déjà un élément de *this entraîne un comportement non défini :

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

Cette fonction surcharge 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 de 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'itérateur [first, last).

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

Le comportement est indéfini si l'un des arguments est un itérateur dans *this.

Contraintes

Participe à la résolution des surcharges uniquement 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é à la position d'index i.

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

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

T &QVarLengthArray::back()

Identique à last(). Fourni pour la compatibilité 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 style STL pointant sur le premier élément du tableau.

Voir aussi 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 maximum d'éléments qui peuvent être stockés dans le tableau sans forcer une réallocation.

Le seul but de cette fonction est de fournir un moyen d'affiner l'utilisation de la mémoire de QVarLengthArray. En général, vous n'aurez que 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 constant de style STL pointant sur le premier élément du tableau.

Voir aussi begin() et cend().

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

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

Voir aussi cbegin() et end().

void QVarLengthArray::clear()

Supprime tous les éléments du tableau.

Identique à resize(0).

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

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

Voir aussi begin() et constEnd().

const T *QVarLengthArray::constData() const

Renvoie un pointeur constant vers les données stockées dans le tableau. Le pointeur peut être utilisé pour accéder aux éléments du tableau. Le pointeur reste valide tant que le tableau n'est pas réalloué.

Cette fonction est surtout utile pour passer un tableau à une fonction qui accepte un tableau C++ simple.

Voir aussi data() et operator[]().

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

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

Voir aussi 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 ait une implémentation de operator==().

Voir aussi 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 inverse de style STL constant pointant vers le premier élément du tableau de longueur variable, dans l'ordre inverse.

Voir aussi begin(), rbegin(), et rend().

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

Renvoie un itérateur inverse de style STL qui pointe sur le dernier élément du tableau de longueur variable, dans l'ordre inverse.

Voir aussi end(), rend(), et rbegin().

T *QVarLengthArray::data()

Renvoie un pointeur sur les données stockées dans le tableau. Le pointeur peut être utilisé pour accéder aux éléments du tableau et 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 surtout utile pour passer un tableau à une fonction qui accepte un tableau C++ simple.

Voir aussi 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 passant args à son constructeur.

Retourne un itérateur pointant sur l'élément placé.

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 à l'arrière de ce QVarLengthArray, en passant args à son constructeur.

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

Cette fonction a été introduite dans Qt 6.3.

bool QVarLengthArray::empty() const

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

Identique à isEmpty(). Fourni pour la compatibilité STL.

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

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

Voir aussi 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 du vecteur l'élément pointé par l'itérateur pos et renvoie un itérateur vers l'élément suivant du vecteur (qui peut être end()).

Voir aussi 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 de begin jusqu'à (mais pas y compris) end. Renvoie un itérateur 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 aussi last() et isEmpty().

const T &QVarLengthArray::first() const

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

T &QVarLengthArray::front()

Identique à first(). Fourni pour la compatibilité 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 la position d'index de la première occurrence de value dans le tableau, en cherchant vers l'avant à partir de la position d'index from. Retourne -1 si aucun élément ne correspond.

Cette fonction exige que le type de valeur ait une implémentation de operator==().

Voir également lastIndexOf() et contains().

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

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

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

Pour les tableaux de grande taille, cette opération peut être lente(temps linéaire), car elle nécessite de déplacer tous les éléments aux indices i et supérieurs d'une position supplémentaire en mémoire. Si vous souhaitez une classe conteneur qui fournisse 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 copies de value devant l'élément pointé par l'itérateur before. Retourne un itérateur pointant sur le premier des éléments insérés.

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)

Insère value devant l'élément pointé par l'itérateur before. Retourne un itérateur pointant sur 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 aussi 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 aussi 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 la position d'index de la dernière occurrence de la valeur value dans le tableau, en effectuant une recherche à rebours à partir de la position d'index from. Si from est égal à -1 (valeur par défaut), la recherche commence au dernier élément. Retourne -1 si aucun élément ne correspond.

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

Voir également indexOf() et contains().

qsizetype QVarLengthArray::length() const

Identique à size().

Voir également isEmpty() et resize().

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

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

Il renvoie le nombre maximum d'éléments que le tableau peut théoriquement contenir. En pratique, ce nombre peut être beaucoup plus petit, limité par la quantité de mémoire disponible dans le système.

Ces fonctions ont été introduites dans Qt 6.8.

void QVarLengthArray::pop_back()

Identique à removeLast(). Fourni pour la compatibilité STL.

void QVarLengthArray::push_back(const T &t)

Ajoute l'élément t au tableau, en l'étendant si nécessaire. Fourni pour la compatibilité STL.

void QVarLengthArray::push_back(T &&t)

Note : Contrairement à la surcharge lvalue de push_back(), le fait de passer une référence à un objet qui est déjà un élément de *this entraîne un comportement non dé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 style STL pointant sur le premier élément du tableau de longueur variable, dans l'ordre inverse.

Voir aussi 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 la position d'index i.

i doit être une position d'index 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 comparaison 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 aussi removeOne().

[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 la valeur true. 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()

Diminue la taille du tableau d'une unité. La taille allouée n'est pas modifiée.

Voir également append().

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

Supprime du tableau le premier élément dont la comparaison est égale à t. Retourne si un élément a effectivement été supprimé.

Cette fonction a été introduite dans Qt 6.1.

Voir aussi removeAll().

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

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

Voir aussi 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 à la position d'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 du tableau, vous pouvez appeler cette fonction et 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 un peu plus lent.

Le seul but de cette fonction est de fournir un moyen d'affiner l'utilisation de la mémoire de QVarLengthArray. En général, vous n'aurez que rarement besoin d'appeler cette fonction. Si vous souhaitez modifier la taille du tableau, appelez resize().

Voir aussi capacity() et squeeze().

void QVarLengthArray::resize(qsizetype size)

Fixe la taille du tableau à size. Si size est supérieur à la taille actuelle, des éléments sont ajoutés à la fin. Si size est inférieur à la taille actuelle, des éléments sont retirés de la fin.

Si le type de valeur est un type primitif (par exemple, char, int, float) ou un type de 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)

Fixe la taille du tableau à size. Si size est supérieur à la taille actuelle, des copies de v sont ajoutées à la fin. Si size est inférieur à la taille actuelle, des éléments sont retirés de la fin.

Remarque : cette fonction n'est disponible que si T peut être construit par copie.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi size() et squeeze().

void QVarLengthArray::shrink_to_fit()

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

qsizetype QVarLengthArray::size() const

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

Voir aussi isEmpty() et resize().

void QVarLengthArray::squeeze()

Libère la mémoire qui n'est pas nécessaire au stockage des éléments. Si le conteneur peut stocker ses éléments sur la pile, il libère la pile et recopie les éléments sur la pile.

Le seul but de cette fonction est de fournir un moyen d'affiner l'utilisation de la mémoire par QVarLengthArray. En général, vous n'aurez que rarement besoin d'appeler cette fonction.

Voir aussi reserve(), capacity() et resize().

T QVarLengthArray::value(qsizetype i) const

Renvoie la valeur à la position d'index i.

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

Voir aussi 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 aussi append() et operator<<().

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

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

Voir aussi append() et operator<<().

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

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

Voir aussi append() et operator+=().

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

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

Voir aussi append() et operator+=().

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

Move assigne other à ce tableau et renvoie une référence à ce tableau. Après le déplacement, other est vide.

Cette fonction a été introduite dans Qt 6.0.

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

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

Affecte other à ce tableau et renvoie une référence à ce tableau.

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

Affecte 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é à la position d'index i.

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

Voir également data() et at().

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

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

Non-membres apparentés

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

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

Remarque : t ne peut pas être une référence à un élément contenu dans array. Si vous ne pouvez pas être sûr que ce n'est pas le cas, prenez une copie de t et appelez cette fonction avec la copie.

Cette fonction a été introduite dans Qt 6.1.

Voir aussi 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 la valeur "true". Renvoie le nombre d'éléments supprimés, le cas échéant.

Cette fonction a été introduite dans Qt 6.1.

Voir aussi erase().

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

Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.

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

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.

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 ait 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 inférieur à rhs; sinon, renvoie false.

Cette fonction nécessite que le type de valeur ait 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 lexicographiquement inférieur ou égal à rhs; sinon, renvoie false.

Cette fonction nécessite que le type de valeur ait 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.

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 ait 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 plus grand que rhs; sinon, renvoie false.

Cette fonction nécessite que le type de valeur ait 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 lexicographiquement supérieur ou égal à rhs; sinon, renvoie false.

Cette fonction nécessite que le type de valeur ait 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.