C++のstd::vectorの使い方

C++のstd::vectorの使い方

std::vectorとは

std::vectorはC++標準ライブラリ(STL)の一部であり、動的配列として機能するコンテナクラスです。

通常の配列と違い、要素数を動的に増減でき、メモリ管理を自動で行ってくれるため、多くの場面で利用されます。

std::vectorの基本操作

std::vectorの宣言と初期化

ベクターの基本的な宣言方法を紹介します。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec1;  // 空のvector
    std::vector<int> vec2(5);  // 要素数5のvector(初期値は0)
    std::vector<int> vec3(5, 10);  // 要素数5で初期値が10
    std::vector<int> vec4 = {1, 2, 3, 4, 5};  // 初期値を指定

    return 0;
}

要素の追加と削除

ベクターのサイズを変更するメソッドを紹介します。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec;
    vec.push_back(1);  // 末尾に1を追加
    vec.push_back(2);  // 末尾に2を追加
    vec.pop_back();    // 末尾の要素を削除

    return 0;
}

std::vectorの主なメソッド

サイズの取得

現在の要素数を取得するにはsize()を使用します。

std::cout << "要素数: " << vec.size() << std::endl;

要素のアクセス

ベクターの要素へアクセスする方法を紹介します。

std::cout << vec[0] << std::endl;  // 添字演算子
std::cout << vec.at(0) << std::endl;  // 安全なアクセス

std::vectorのイテレータ

イテレータを使用したループ

イテレータを使用してベクターの全要素を出力する例です。

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    for (auto it = vec.begin(); it != vec.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

std::vectorのメモリ管理

容量の確認

ベクターのメモリ容量を確認するにはcapacity()を使用します。

std::cout << "容量: " << vec.capacity() << std::endl;

メモリを最適化

不要なメモリを解放するにはshrink_to_fit()を使います。

vec.shrink_to_fit();

std::vectorの応用

std::vectorの2次元配列

ベクターを使って2次元配列を作成する例を紹介します。

#include <iostream>
#include <vector>

int main() {
    std::vector<std::vector<int>> matrix(3, std::vector<int>(3, 0));

    return 0;
}

std::vectorのソート

ベクターを昇順にソートする方法を紹介します。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {3, 1, 4, 1, 5, 9};
    std::sort(vec.begin(), vec.end());

    return 0;
}

std::vectorのパフォーマンス最適化

std::vectorの事前確保

ベクターのサイズが分かっている場合、reserve()を使用すると効率的です。

vec.reserve(100);

std::vectorの要素の移動

ムーブセマンティクスを使用して、コピーのオーバーヘッドを削減できます。

#include <iostream>
#include <vector>

std::vector<int> createVector() {
    std::vector<int> temp = {1, 2, 3, 4, 5};
    return std::move(temp);
}

int main() {
    std::vector<int> vec = createVector();
    return 0;
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です