C++のSTL(標準テンプレートライブラリ)を使いこなそう

C++

C++の標準テンプレートライブラリ(STL)は、強力で使いやすいデータ構造とアルゴリズムを提供します。

このライブラリを使いこなすことで、効率的なプログラムを簡単に書くことができるようになります。

本記事では、STLの基本的なコンテナであるベクター、リスト、マップについて紹介し、それぞれの使い方を解説します。

STLとは

STLは、C++の標準ライブラリの一部であり、テンプレートを利用した汎用的なデータ構造とアルゴリズムを提供します。STLの主な要素は以下の3つです。

  • コンテナ:データを格納するためのデータ構造(例:ベクター、リスト、マップ)
  • アルゴリズム:コンテナ内のデータを操作するための関数(例:ソート、検索)
  • イテレータ:コンテナの要素にアクセスするためのオブジェクト

STLを利用することで、再利用可能で効率的なコードを書くことができるようになります。

ベクター(std::vector)

ベクターとは

ベクターは、動的配列を実現するためのコンテナで、サイズの変更が可能です。

配列のように連続したメモリ領域を持つため、ランダムアクセスが高速です。

ベクターの基本操作

以下に、ベクターの基本的な使い方を示します。

#include <iostream>
#include <vector>

int main()
{
    // ベクターの宣言と初期化
    std::vector<int> vec;

    // 要素の追加
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);

    // 要素のアクセス
    std::cout << "vec[0]: " << vec[0] << std::endl; // 出力: vec[0]: 1

    // ベクターのサイズ
    std::cout << "Size: " << vec.size() << std::endl; // 出力: Size: 3

    // イテレータを使った要素の表示
    for (auto it = vec.begin(); it != vec.end(); ++it)
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl; // 出力: 1 2 3

    return 0;
}

リスト(std::list)

リストとは

リストは、双方向リンクリストを実現するためのコンテナです。

要素の挿入や削除が効率的であり、特にリストの途中に対する操作が高速です。

リストの基本操作

以下に、リストの基本的な使い方を示します。

#include <iostream>
#include <list>

int main()
{
    // リストの宣言と初期化
    std::list<int> lst;

    // 要素の追加
    lst.push_back(1);
    lst.push_back(2);
    lst.push_back(3);

    // 要素の表示
    for (auto it = lst.begin(); it != lst.end(); ++it)
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl; // 出力: 1 2 3

    // 要素の削除
    lst.pop_front();
    std::cout << "After pop_front(): ";
    for (auto it = lst.begin(); it != lst.end(); ++it)
    {
        std::cout << *it << " ";
    }
    std::cout << std::endl; // 出力: 2 3

    return 0;
}

マップ(std::map)

マップとは

マップは、キーと値のペアを格納する連想配列の一種です。

キーは一意であり、効率的な検索が可能です。

マップの基本操作

以下に、マップの基本的な使い方を示します。

#include <iostream>
#include <map>

int main()
{
    // マップの宣言と初期化
    std::map<std::string, int> mp;

    // 要素の追加
    mp["one"] = 1;
    mp["two"] = 2;
    mp["three"] = 3;

    // 要素のアクセス
    std::cout << "mp[\"two\"]: " << mp["two"] << std::endl; // 出力: mp["two"]: 2

    // 要素の表示
    for (const auto& pair : mp)
    {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    // 出力:
    // one: 1
    // two: 2
    // three: 3

    return 0;
}

終わりに

C++のSTLは、非常に便利で強力なツールです。

ベクター、リスト、マップといった基本的なコンテナを使いこなすことで、効率的で可読性の高いコードを書くことができるようになります。

本記事を通じて、STLの基礎を学び、これらのコンテナを自分のプログラムで活用してみてください。

さらに詳しい情報を知りたい場合は、C++の公式ドキュメントや関連書籍を参照することをお勧めします。

コメント

タイトルとURLをコピーしました