C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++ STLのコンテナとは?種類と基本的な使い方をわかりやすく解説

本記事では、C++のSTL(Standard Template Library)における「コンテナ」について、その概要と分類、そして基本的な使い方をサンプルコード付きで解説します。

コンテナとは

コンテナとは、同じ型または異なる型の複数の要素を格納するために使用されるオブジェクトのことです。STLにはさまざまなコンテナが用意されており、データの格納方法やアクセス方法の特徴に応じて、以下のように分類されます。

  • シーケンスコンテナ(連続コンテナ):array、vector、list など。要素を順番に並べて管理します。
  • 連想コンテナ:set、map、multimap など。キーと値のペアやソート済みの集合として要素を管理します。
  • 非順序連想コンテナ:unordered_set、unordered_map など。ハッシュテーブルを基盤とし、高速な検索を実現します。
  • コンテナアダプタ:stack、queue など。既存のコンテナをラップして特定の操作だけを提供するインターフェースです。

配列を使った基本例

まずは最もシンプルな例として、固定長の配列に初期値を設定し、すべての要素を出力するプログラムを見てみましょう。初期化時に指定しなかった要素は自動的に0で埋められます。

#include <iostream>
using namespace std;

int main() {
    int array[10] = {1, 2, 3, 4};
    for (int i = 0; i < 10; i++) {
        cout << array[i] << " ";
    }
    return 0;
}

実行結果

1 2 3 4 0 0 0 0 0 0

このように、配列では宣言時にサイズを決める必要があり、柔軟性に欠ける場面があります。そこでSTLのvectorなどのコンテナを使うと、要素数を動的に変更でき、より安全かつ便利にデータを扱えます。用途に応じて適切なコンテナを選択することが、効率的なC++プログラミングの第一歩です。

  1. C++ STL入門:setとunordered_setの違いを徹底解説

    本記事では、C++ STLにおける set と unordered_set の概要をわかりやすく解説し、両者の違いについても詳しく学んでいきます。 setとは? set(セット)は、Key型の一意なオブジェクトをソート済みの状態で格納する連想コンテナです。各要素は一度しか出現できず、重複した値は許されません。ユーザーは任意の順序で要素を挿入してsetを作成できますが、setは常にソートされた形でデータを返します。つまり、setにはデータを並べ替えるための仕組みが内部に組み込まれており、その処理はユーザーから抽象化されています。 setを使うべき主なケースは以下の通りです。 ソート済みのデ

  2. C++ STLのスタック(stack)徹底解説!LIFO構造の基本操作とサンプルコード

    C++ STLにおけるスタック(stack)は、LIFO(Last In First Out:後入れ先出し)構造として実装されるコンテナです。LIFOとは「最後に入れたものが最初に取り出される」という意味で、本を一冊ずつ積み上げた山をイメージすると理解しやすいでしょう。一番上に置いた本(=最後に挿入された要素)が最初に取り出されることから、この構造はLIFOと呼ばれています。 スタックで使える主な操作 1. top() – 最上位要素の取得 スタックの最上位(先頭)にある要素への参照を返します。要素自体は削除されません。 構文:name_of_stack.top() 引数:なし 戻り値:ス