Redimensionner le tableau en C++

  1. Utiliser la méthode de resize pour redimensionner un tableau en C++
  2. Utiliser la méthode erase pour réduire le nombre d’éléments dans le tableau en C++
  3. Utiliser une fonction personnalisée pour redimensionner un tableau en C++

Cet article présente plusieurs méthodes pour redimensionner un tableau en C++.

Utiliser la méthode de resize pour redimensionner un tableau en C++

Comme les conteneurs de tableaux de longueur fixe ne sont pas censés être redimensionnés en C++, nous nous concentrerons sur la classe std::vector. Le resize est la fonction intégrée du conteneur vector, et il modifie le nombre d’éléments que le vecteur contient. La fonction peut réduire le nombre d’éléments si le premier argument count est inférieur à la taille actuelle du vector. Sinon, si l’argument count est plus grand que la taille du vecteur, resize insère des éléments supplémentaires avec des valeurs par défaut de 0 ou l’utilisateur peut fournir la valeur désirée comme second argument à la fonction.

#include <iostream>
#include <vector>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector;

template<typename T>
void printVectorElements(vector<T> &vec)
{
    for (auto i = 0; i < vec.size(); ++i) {
        cout << vec.at(i) << "; ";
    }
    cout << endl;
}

int main() {
    vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

    cout << "i_vec1             : ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;

    i_vec1.resize(i_vec1.size() - 2);

    cout << "i_vec1 (resized -2): ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;
    cout << endl;

    return EXIT_SUCCESS;
}

Production :

i_vec1             : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized -2): 12; 32; 43; 53; 23;
size: 5

Utiliser la méthode erase pour réduire le nombre d’éléments dans le tableau en C++

La fonction erase est une autre méthode intégrée de la classe std::vector qui peut enlever un seul élément du vector ou même effacer toute la plage spécifiée avec les itérateurs correspondants.

Dans l’exemple suivant, une plage donnée de l’élément 2 à la fin est supprimée du vector des entiers. Notez que c’est une pratique courante de passer les paramètres de l’intervalle avec des itérateurs begin et end.

#include <iostream>
#include <vector>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector;

template<typename T>
void printVectorElements(vector<T> &vec)
{
    for (auto i = 0; i < vec.size(); ++i) {
        cout << vec.at(i) << "; ";
    }
    cout << endl;
}

int main() {
    vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

    cout << "i_vec1          : ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;

    i_vec1.erase(i_vec1.begin() + 2, i_vec1.end());

    cout << "i_vec1 (resized): ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;
    cout << endl;

    return EXIT_SUCCESS;
}

Production :

i_vec1          : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized): 12; 32;
size: 2

Utiliser une fonction personnalisée pour redimensionner un tableau en C++

On peut aussi définir une fonction distincte qui itére à travers le vecteur et qui retire un nombre donné d’éléments de l’extrémité du vecteur. Ceci peut être implémenté en utilisant la fonction intégrée pop_back qui supprime le dernier élément du vecteur. Comme montré dans l’exemple de code suivant, le modèle de fonction resizeVector est défini pour prendre un vecteur de type Ts et plusieurs éléments à en retirer.

#include <iostream>
#include <vector>

using std::cout; using std::cin;
using std::endl; using std::string;
using std::vector;

template<typename T>
void printVectorElements(vector<T> &vec)
{
    for (auto i = 0; i < vec.size(); ++i) {
        cout << vec.at(i) << "; ";
    }
    cout << endl;
}

template<typename T>
void resizeVector(vector<T> &vec, int elems)
{
    for (auto i = 0; i < elems; ++i) {
        vec.pop_back();
    }
}

int main() {
    vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

    cout << "i_vec1          : ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;

    resizeVector(i_vec1, 3);

    cout << "i_vec1 (resized): ";
    printVectorElements(i_vec1);
    cout << "size: " << i_vec1.size() << endl;
    cout << endl;

    return EXIT_SUCCESS;
}

Production :

i_vec1          : 12; 32; 43; 53; 23; 65; 84;
size: 7
i_vec1 (resized): 12; 32; 43; 53;
size: 4

Article connexe - C++ Array

  • Comment boucler un tableau en C++
  • Comment effacer les valeurs des éléments de tableau en C++