工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C++ std::vector完全ガイド:動的配列、イテレータ、実践例

C++ vectorとは

C++ vectorは、要素の追加・削除に合わせて自動的にリサイズされる動的配列です。要素は連続して格納されるため、インデックスによる高速アクセスとイテレータを使った走査が可能です。

末尾への挿入は償却定数時間で行われます。末尾要素の削除も定数時間ですが、先頭や中間への挿入・削除は要素のシフトが必要なため線形時間かかります。

vectorを使うべき場面

C++でのvector初期化

std::vector<data-type> name (size, value); // sizeとvalueは省略可能

イテレータ

イテレータはvector要素へのポインタ風インターフェースを提供します。主なイテレータ関数:

モディファイア(変更操作)

モディファイアはvectorの内容を変更します。主要な関数:

例1:基本的なイテレーション

#include <iostream>
#include <vector>
int main() {
    std::vector<int> nums;
    for (int a = 1; a <= 5; ++a) {
        nums.push_back(a);
    }
    std::cout << "Output from begin and end: ";
    for (auto it = nums.begin(); it != nums.end(); ++it) {
        std::cout << *it << ' ';
    }
    std::cout << "\nOutput from cbegin and cend: ";
    for (auto it = nums.cbegin(); it != nums.cend(); ++it) {
        std::cout << *it << ' ';
    }
    return 0;
}

出力:

イテレータによる走査結果

例2:高度なモディファイア

#include <iostream>
#include <vector>
int main() {
    std::vector<int> nums;
    nums.assign(5, 1); // 5要素、すべて1で初期化
    std::cout << "Vector contents: ";
    for (size_t i = 0; i < nums.size(); ++i) {
        std::cout << nums[i] << ' ';
    }
    nums.push_back(2);
    std::cout << "\nLast element: " << nums.back();
    nums.pop_back();
    std::cout << "\nVector contents: ";
    for (int a : nums) std::cout << a << ' ';
    nums.insert(nums.begin(), 7);
    std::cout << "\nFirst element: " << nums.front();
    nums.clear();
    std::cout << "\nSize after clear(): " << nums.size();
    return 0;
}

出力:

各種モディファイアの実行結果

容量関連関数

vectorのストレージ特性を確認・操作する関数:

例3:容量の探索

#include <iostream>
#include <vector>
int main() {
    std::vector<int> vector1;
    for (int x = 1; x <= 10; ++x) {
        vector1.push_back(x);
    }
    std::cout << "Vector size: " << vector1.size() << std::endl;
    std::cout << "Vector capacity: " << vector1.capacity() << std::endl;
    std::cout << "Maximum size of vector: " << vector1.max_size() << std::endl;
    vector1.resize(5);
    std::cout << "Vector size after resizing: " << vector1.size() << std::endl;
    if (!vector1.empty())
        std::cout << "Vector is not empty" << std::endl;
    else
        std::cout << "Vector is empty" << std::endl;
    return 0;
}

出力:

容量関連関数の実行結果

重要なポイント

C言語

  1. C言語 標準ライブラリ関数: 実践ガイド
  2. C++演算子を徹底解説:種類、例、サンプルプログラム付き
  3. C++ do-while文:構文、実践例、ネストしたループ
  4. C++ switch文をマスター:構文、使い方、実践例
  5. C++動的配列の確保をマスター:コード例付き実践ガイド
  6. C++ポインタをマスター:概念、例、実践的応用
  7. C++演算子オーバーロード:コード例付き実践ガイド
  8. C++構造体を実例で徹底解説
  9. C++のstd::listをマスターする:構文、関数、実践例
  10. C++関数を実例で徹底解説:基本から応用まで
  11. C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス