Maison développement back-end C++ Comment utiliser la fonction de suppression de vecteur en C

Comment utiliser la fonction de suppression de vecteur en C

Feb 18, 2024 am 11:29 AM
c vector remove typedef

Comment utiliser la fonction de suppression de vecteur en C

Supprimer l'utilisation du vecteur en C nécessite des exemples de code spécifiques

Introduction : le vecteur en langage C est un tableau dynamique dont la taille peut être ajustée au moment de l'exécution. Il s'agit d'une structure de données très couramment utilisée pour stocker et manipuler plusieurs objets. Dans les applications pratiques, nous devons souvent insérer de nouveaux éléments dans des vecteurs ou supprimer des éléments existants. Cet article présentera en détail l'utilisation de la suppression de vecteurs en langage C et donnera des exemples de code correspondants.

  1. Prototype de la fonction de suppression de vecteur : void remove(vector *v, int index)

Il y a deux paramètres dans le prototype de la fonction Le premier paramètre est le pointeur vectoriel et le deuxième paramètre est l'index de l'élément à être. supprimé. Cet index commence à compter à partir de 0 et représente la position de l'élément à supprimer dans le vecteur.

  1. Exemple de code :
#include <stdio.h>
#include <stdlib.h>

// 定义vector结构体
typedef struct {
    int *data;  // 存储元素的数组
    int size;   // 当前元素个数
    int capacity;  // 容量
} vector;

// 初始化vector
void initVector(vector *v) {
    v->size = 0;
    v->capacity = 4;
    v->data = (int *)malloc(sizeof(int) * v->capacity);
}

// 向vector中插入元素
void insert(vector *v, int value) {
    // 如果当前元素个数等于容量,需要重新分配内存
    if (v->size == v->capacity) {
        v->capacity *= 2;
        v->data = (int *)realloc(v->data, sizeof(int) * v->capacity);
    }
    v->data[v->size] = value;
    v->size++;
}

// 删除vector中的元素
void remove(vector *v, int index) {
    // 检查索引是否合法
    if (index < 0 || index >= v->size) {
        printf("Invalid index");
        return;
    }
    // 将后面的元素向前移动
    for (int i = index; i < v->size - 1; i++) {
        v->data[i] = v->data[i + 1];
    }
    v->size--;

    // 如果元素个数小于容量的一半,缩小容量
    if (v->size <= v->capacity / 2) {
        v->capacity /= 2;
        v->data = (int *)realloc(v->data, sizeof(int) * v->capacity);
    }
}

int main() {
    vector v;
    initVector(&v);
    
    // 向vector中插入元素
    insert(&v, 1);
    insert(&v, 2);
    insert(&v, 3);
    insert(&v, 4);

    // 打印vector中的元素
    printf("Before remove: ");
    for (int i = 0; i < v.size; i++) {
        printf("%d ", v.data[i]);
    }
    printf("
");

    // 删除vector中的元素
    remove(&v, 1);

    // 打印删除后的vector中的元素
    printf("After remove: ");
    for (int i = 0; i < v.size; i++) {
        printf("%d ", v.data[i]);
    }
    printf("
");

    return 0;
}
Copier après la connexion

Description du code :

  • Implémentez la fonction de vecteur en définissant une structure. La structure contient un pointeur data de type int, qui représente un tableau dynamique. Il existe également des champs de taille et de capacité, qui indiquent respectivement le nombre actuel d'éléments et la capacité.
  • La fonction initVector est utilisée pour initialiser le vecteur, définir la taille et la capacité sur 0 et allouer la mémoire initiale pour les données.
  • La fonction d'insertion est utilisée pour insérer des éléments dans un vecteur. Si le nombre actuel d'éléments est égal à la capacité, la mémoire doit être réaffectée. La fonction
  • remove est utilisée pour supprimer des éléments dans un vecteur. Selon l'indice donné, les éléments suivants sont avancés et la capacité est réduite.
  • Dans l'exemple de code, quatre éléments sont d'abord insérés dans le vecteur, puis l'élément d'index 1 est supprimé.

Résumé :
Cet article présente l'utilisation du vecteur de suppression en langage C et donne des exemples de code correspondants. A travers cet exemple, nous pouvons clairement voir comment insérer des éléments dans le vecteur, comment supprimer des éléments et gérer la gestion de la mémoire correspondante. Ces opérations sont ce que nous rencontrons souvent dans les projets réels. Maîtriser l’utilisation de cette structure de données est très utile pour les programmeurs en langage C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation de la structure typedef en langage C Utilisation de la structure typedef en langage C May 09, 2024 am 10:15 AM

Utilisation de la structure typedef en langage C

VSCode et VS C++ IntelliSense ne fonctionnent pas ou ne récupèrent pas les bibliothèques VSCode et VS C++ IntelliSense ne fonctionnent pas ou ne récupèrent pas les bibliothèques Feb 29, 2024 pm 01:28 PM

VSCode et VS C++ IntelliSense ne fonctionnent pas ou ne récupèrent pas les bibliothèques

Explication détaillée du développement du minuteur du noyau Linux et du pilote de travail différé Explication détaillée du développement du minuteur du noyau Linux et du pilote de travail différé Feb 13, 2024 am 11:57 AM

Explication détaillée du développement du minuteur du noyau Linux et du pilote de travail différé

Comprendre la gestion de la mémoire des pointeurs de fonction C++ : éviter les pièges de pointeur Comprendre la gestion de la mémoire des pointeurs de fonction C++ : éviter les pièges de pointeur Apr 29, 2024 pm 09:03 PM

Comprendre la gestion de la mémoire des pointeurs de fonction C++ : éviter les pièges de pointeur

Correction du code d'erreur Xbox 8C230002 Correction du code d'erreur Xbox 8C230002 Feb 27, 2024 pm 03:55 PM

Correction du code d'erreur Xbox 8C230002

Comment écrire du code simple pour les feux d'artifice en langage C Comment écrire du code simple pour les feux d'artifice en langage C Apr 13, 2024 pm 09:18 PM

Comment écrire du code simple pour les feux d'artifice en langage C

La différence entre la structure typedef et la structure en C++ La différence entre la structure typedef et la structure en C++ May 01, 2024 am 11:36 AM

La différence entre la structure typedef et la structure en C++

Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité Apr 29, 2024 pm 06:45 PM

Transformez le code avec des pointeurs de fonctions C++ : améliorez l'efficacité et la réutilisabilité

See all articles