Fonction front de <vector> en C++

Classe conteneur C++ <vector>


Parmi les différentes opérations de vector,frontest une fonction très simple, utilisée pourObtenir le premier élément。

frontest une fonction membre de la classe conteneur, utilisée pourrenvoie le premier élément du conteneur. Elle est équivalente àat(0)ouoperator[](0), mais la sémantique est plus claire.

frontil fournit un moyen intuitif d'accéder au premier élément du conteneur.

Définitions de mots: frontCela signifie « front », c'est-à-dire qu'il récupère le premier élément (le plus en avant).


Syntaxe de base et paramètres

frontC'est une fonction membre des classes conteneur, et son appel est très simple, sans nécessiter aucun paramètre.

Format de syntaxe

reference front();
const_reference front() const;

Description des paramètres

  • Paramètre: Aucun paramètre
    • frontn'accepte aucun argument.

Description de la fonction

  • Valeur de retour: renvoie le premier élément du conteneurRéférenceSi le conteneur est un conteneur const, il renvoie une référence const.
  • EffetRenvoie le premier élément du conteneur (l'élément à l'indice 0).
  • Remarque: appelerfrontAvant de l'utiliser, assurez-vous que le conteneur n'est pas vide ; sinon, le comportement est indéfini. Il est recommandé d'utiliser d'abordempty()ousize() > 0Vérifiez.

Exemple

Maîtrisons-le à fond grâce à une série d'exemples.frontUtilisation.

Exemple 1 : Utilisation de base - Obtenir le premier élément

Exemple

#include <iostream>
#include <vector>

int main() {
    // 1. Créer un vecteur et ajouter quelques éléments
    std::vector<int> numbers = {10, 20, 30, 40, 50};

    std::cout << "La taille du vecteur est : " << numbers.size() << std::endl;

    // 2. Utiliser front pour obtenir le premier élément
    std::cout << "Le premier élément (front) : " << numbers.front() << std::endl;
    std::cout << "Utilisez at(0) : "⟦⟧numbers. << numbers.at(0) << std::endl;
    std::cout << "Utilisez [0] : " << numbers[0] << std::endl;

    return 0;
}

Résultat d'exécution attendu :

vector的大小是: 5
第一个元素 (front): 10
使用 at(0): 10
使用 [0]: 10

Analyse du code :

  1. numbers.front()Renvoie le premier élément10。
  2. Il etnumbers.at(0)etnumbers[0]la même valeur, mais avec une sémantique plus claire.

Exemple : Modification de la valeur du premier

frontElle retourne une référence, elle peut donc être utilisée pour modifier la valeur de l'élément.

Exemple

#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> names = {"Alice", "Bob", "Charlie"};

    std⟦⟧cout::cout << "Avant modification, le premier élément : " << names.front() << std::endl;

    // Utilisez front() pour obtenir une référence et modifier l'élément
    names.front() = "Andrew";

    std::cout << "Après modification, le premier élément : " << names.front() << std::endl;

    // Maintenant, le contenu de names est : Andrew, Bob, Charlie

    return 0;
}

Résultat d'exécution attendu :

修改前,第一个元素: Alice
修改后,第一个元素: Andrew

Analyse du code :

  • names.front() = "Andrew";La valeur du premier élément a été modifiée via la référence.
  • front()renvoie une référence lvalue modifiable.

Exemple 3 : Utilisation sécurisée de front - Vérifier si le conteneur est vide

Lors de l'utilisationfrontAvant cela, vous devez d'abord vérifier si le conteneur est vide.

Exemple

#include <iostream>
#include <vector>

void printFront(const std::vector<int>& v) {
    if(!v.empty()) {
        std::cout << "Le premier élément est : " << v.front() << std::endl;
    }
    else {
        std::cout << "Le conteneur est vide, impossible d'obtenir le premier élément" << std::endl;
    }
}

int main() {
    std::vector<int> numbers = {10, 20, 30};

    // Cas normal
    printFront(numbers);

    // Cas de conteneur vide
    std::vector<int> emptyVec;
    printFront(emptyVec);

    return 0;
}

Résultat d'exécution attendu :

第一个元素是: 10
容器为空,无法获取第一个元素

Analyse du code :

  • !v.empty()vérifie si le conteneur n'est pas vide.
  • Lors de l'appelfrontVérifier avant utilisation peut éviter un comportement indéfini.

Exemple 4 : Utilisation de front pour implémenter le début d'une file

frontIl peut être utilisé pour implémenter des structures de données de type file.

Exemple

#include <iostream>
#include <vector>
#include <string>

class SimpleQueue {
private:
    std::vector<std::string> data;

public:
    // Enfiler
    void enqueue(const std::string& item) {
        data.push_back(item);
    }

    // Défiler (supprimer l'élément de tête)
    void dequeue() {
        if(!data.empty()) {
            // Supprime le premier élément, et les éléments suivants avancent
            data.erase(data.begin());
        }
    }

    // Obtenir l'élément de tête
    std::string front() const {
        if(!data.empty()) {
            return data.front();
        }
        return "";
    }

    // Vérifier si la file est vide
    bool empty() const {
        return data.empty();
    }

    // Obtenir la taille de la file
    size_t size() const {
        return data.size();
    }
};

int main() {
    SimpleQueue q;

    q.enqueue("Utilisateur A");
    q.enqueue("Utilisateur B");
    q.enqueue("Utilisateur C");

    std::cout << "Taille de la file : " << q.size() << std::endl;

    while(!q.empty()) {
        std::cout << "Traitement : " << q.front() << std::endl;
        q.dequeue();
    }

    std::cout << "La file est vide" << std::endl;

    return 0;
}

Résultat d'exécution attendu :

队列大小: 3
处理: 用户A
处理: 用户B
处理: 用户C
队列已清空

Analyse du code :

  • front()Utilisé pour obtenir l'élément de tête (l'élément en attente de traitement).
  • Cet exemple montre comment utiliserfrontImplémenter une file d'attente premier entré, premier sorti (FIFO).

Classe conteneur C++ <vector>

autres extensions