ホームページ バックエンド開発 C++ Cでvectorのdelete関数を使用する方法

Cでvectorのdelete関数を使用する方法

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

Cでvectorのdelete関数を使用する方法

C でのベクトルの削除の使用には、特定のコード例が必要です

はじめに: C 言語のベクトルは、実行時にサイズを調整できる動的配列です。これは、複数のオブジェクトを保存および操作するために使用される、非常に一般的に使用されるデータ構造です。実際のアプリケーションでは、多くの場合、新しい要素をベクトルに挿入したり、既存の要素を削除したりする必要があります。この記事では、C 言語でのベクトル削除の使用法を詳しく紹介し、対応するコード例を示します。

  1. vector の削除関数プロトタイプ: void delete(vector *v, int Index)

関数プロトタイプには 2 つのパラメータがあり、最初のパラメータはベクトル ポインタです。 2 番目のパラメータは、削除する要素のインデックスです。このインデックスは 0 からカウントを開始し、ベクトル内で削除される要素の位置を表します。

  1. サンプルコード:
#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;
}
ログイン後にコピー

コード説明:

  • 構造体を定義することでベクトルの機能を実現します。この構造体には、動的配列を表す int 型のポインター データが含まれています。サイズ フィールドと容量フィールドもあり、それぞれ現在の要素数と容量を示します。
  • initVector 関数は、ベクトルを初期化し、サイズと容量の両方を 0 に設定し、データ用の初期メモリを割り当てるために使用されます。
  • 挿入関数は、要素をベクターに挿入するために使用されます。現在の要素数が容量と等しい場合、メモリを再割り当てする必要があります。
  • Theremove 関数は、ベクター内の要素を削除するために使用されます。指定されたインデックスに従って、次の要素が前方に移動され、容量が削減されます。
  • サンプル コードでは、まず 4 つの要素がベクトルに挿入され、その後インデックス 1 の要素が削除されます。

概要:
この記事では、C 言語での削除ベクトルの使用法を紹介し、対応するコード例を示します。この例を通じて、ベクトルに要素を挿入する方法、要素を削除する方法、および対応するメモリ管理を処理する方法が明確にわかります。これらの操作は実際のプロジェクトで頻繁に遭遇するものであり、このデータ構造の使い方をマスターすることは、C 言語プログラマーにとって非常に役立ちます。

以上がCでvectorのdelete関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語でのtypedef構造体の使い方 C言語でのtypedef構造体の使い方 May 09, 2024 am 10:15 AM

typedef struct は、構造体の使用を簡素化するために構造体型のエイリアスを作成するために C 言語で使用されます。構造体の別名を指定することで、新しいデータ型を既存の構造体に別名付けします。利点としては、可読性の向上、コードの再利用、型チェックなどが挙げられます。注: エイリアスを使用する前に構造体を定義する必要があります。エイリアスはプログラム内で一意であり、宣言されているスコープ内でのみ有効である必要があります。

C++ 関数ポインタのメモリ管理について: ポインタ トラップの回避 C++ 関数ポインタのメモリ管理について: ポインタ トラップの回避 Apr 29, 2024 pm 09:03 PM

C++ で関数ポインターを使用する場合、落とし穴を避けるためにメモリ管理を慎重に考慮する必要があります。これらのトラップには、ダングリング ポインター (スコープ外の関数を指す) とワイルド ポインター (初期化されないか nullptr に設定されない関数ポインター) が含まれます。これらの落とし穴を回避するには、常に関数ポインターを初期化し、メモリーを慎重に管理し、スマート ポインターを使用するというベスト プラクティスに従ってください。こうすることで、関数ポインターを安全に使用し、ポインター トラップに陥るのを避けることができます。

VSCode および VS C++ IntelliSense が機能しない、またはライブラリを選択しない VSCode および VS C++ IntelliSense が機能しない、またはライブラリを選択しない Feb 29, 2024 pm 01:28 PM

VS Code および Visual Studio C++ IntelliSense は、特に大規模なプロジェクトで作業している場合、ライブラリを選択できない場合があります。 #Include&lt;wx/wx.h&gt; の上にマウスを移動すると、「ソース ファイル 'string.h' を開けません」というエラー メッセージが表示され (「wx/wx.h」に応じて異なります)、オートコンプリート関数が応答しなくなることがあります。この記事では、VSCode および VSC++ IntelliSense が機能しない場合、またはライブラリを抽出できない場合の対処法を説明します。私のインテリセンスが C++ で動作しないのはなぜですか?大きなファイルを扱う場合、IntelliSense が機能しないことがあります。

Xboxエラーコード8C230002を修正 Xboxエラーコード8C230002を修正 Feb 27, 2024 pm 03:55 PM

エラー コード 8C230002 が原因で、Xbox でコンテンツを購入または視聴できませんか?一部のユーザーは、本体でコンテンツを購入または視聴しようとすると、引き続きこのエラーが発生します。申し訳ありませんが、Xbox サービスに問題があります。後でもう一度お試しください。この問題のヘルプが必要な場合は、www.xbox.com/errorhelp にアクセスしてください。ステータス コード: 8C230002 このエラー コードは通常、サーバーまたはネットワークの一時的な問題によって発生します。ただし、アカウントのプライバシー設定や保護者による制限など、他の理由により、特定のコンテンツの購入または表示が妨げられる場合があります。 Xbox エラー コード 8C230002 を修正する Xbox 本体でコンテンツを視聴または購入しようとしたときにエラー コード 8C が表示された場合

C言語で簡単な花火コードを書く方法 C言語で簡単な花火コードを書く方法 Apr 13, 2024 pm 09:18 PM

C で単純な Firework コードを作成するには、次の手順に従う必要があります。 ヘッダー ファイルとライブラリをインクルードします。定数とマクロを定義します。パーティクル データ構造を作成します。グローバル変数を宣言します。 main() 関数で花火のパーティクルを初期化します。ゲーム ループ内でパーティクルの位置と速度を更新し、描画します。寿命に達したパーティクルを確認して破壊します。

typedef struct と C++ の struct の違い typedef struct と C++ の struct の違い May 01, 2024 am 11:36 AM

typedef struct と struct の違い: typedef struct は構造体型のエイリアスを作成するのに対し、struct は新しい構造体型を定義します。 typedef struct で作成されたエイリアスは宣言後に使用でき、struct で定義された構造体は定義後に使用できます。 typedef struct も struct も追加の記憶領域を作成しません。

C++ 関数ポインターを使用してコードを変換: 効率と再利用性を向上させる C++ 関数ポインターを使用してコードを変換: 効率と再利用性を向上させる Apr 29, 2024 pm 06:45 PM

関数ポインター テクノロジは、コードの効率と再利用性を、具体的には次のように向上させることができます。 効率の向上: 関数ポインターを使用すると、重複するコードが削減され、呼び出しプロセスが最適化されます。再利用性の向上: 関数ポインターを使用すると、一般的な関数を使用してさまざまなデータを処理できるようになり、プログラムの再利用性が向上します。

詳細: PHP コードを C に変換する方法 詳細: PHP コードを C に変換する方法 Mar 12, 2024 pm 01:36 PM

PHP は Web 開発で広く使用されているスクリプト言語ですが、C 言語は低レベルのプログラミング言語です。特定のシナリオでは、プログラムのパフォーマンスと操作効率を向上させるために、PHP コードを C 言語に変換する必要がある場合があります。この記事では、PHP コードが C 言語に変換される方法を詳しく説明し、具体的なコード例を示します。 PHP コードを C 言語に変換する理由 まず、PHP コードを C 言語に変換する必要がある理由を見てみましょう。 PHP はインタープリタ言語であり、実行コードは実行時に 1 行ずつ解釈される必要があります。

See all articles