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

Pythonの辞書(dict)をC++に変換するには?mapとunordered_mapの使い方を解説

Pythonの辞書(dict)は、内部的にはハッシュマップとして実装されています。C++では、標準ライブラリのmapデータ構造を使うことで、Pythonの辞書とほぼ同じ動作を再現できます。

C++のmapを使った基本的な実装例

以下のコードは、初期化リストを使ってmapを作成し、その内容をすべて出力する例です。

#include <iostream>
#include <map>
using namespace std;

int main(void) {
    /* 初期化リストコンストラクタ */
    map<char, int> m1 = {
        {'a', 1},
        {'b', 2},
        {'c', 3},
        {'d', 4},
        {'e', 5}
    };

    cout << "Map contains following elements" << endl;
    for (auto it = m1.begin(); it != m1.end(); ++it)
        cout << it->first << " = " << it->second << endl;

    return 0;
}

このプログラムを実行すると、次のような出力が得られます。

Map contains following elements
a = 1
b = 2
c = 3
d = 4
e = 5

上記のC++のmapは、以下のPythonの辞書と同等です。

m1 = {
    'a': 1,
    'b': 2,
    'c': 3,
    'd': 4,
    'e': 5
}

unordered_mapを使うとさらにPythonのdictに近づく

std::mapは内部で平衡二分探索木(赤黒木)を使用しているため、要素へのアクセスはO(log n)です。一方、Pythonの辞書はハッシュテーブルベースで、平均O(1)でのアクセスが可能です。よりPythonの辞書に近い性能特性が必要な場合は、C++11以降で利用できるstd::unordered_mapを選ぶとよいでしょう。

#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;

int main(void) {
    unordered_map<string, int> m1 = {
        {"apple", 100},
        {"banana", 200},
        {"orange", 300}
    };

    cout << "banana = " << m1["banana"] << endl;
    return 0;
}

まとめ

Pythonの辞書をC++で再現する場合は、キーと値のペアを格納できる連想配列であるstd::mapまたはstd::unordered_mapを使うのが基本です。キーを順序付きで管理したい場合はmap、検索速度を優先したい場合はunordered_mapというように、用途に応じて使い分けることで、Pythonの辞書と同等の処理を効率的に実現できます。

  1. Pythonのtranslate()メソッドで文字列を一括置換・翻訳する方法

    Pythonでは、文字列内の複数の文字をまとめて別の文字に置き換えたい場合、translate()メソッドを使うと効率的です。このメソッドは、str.maketrans()関数で作成した変換テーブルに基づいて文字を変換した新しい文字列のコピーを返します。また、オプションとして削除したい文字を指定すれば、該当する文字をすべて取り除くことも可能です。基本的な使い方以下の例では、母音「aeiou」をそれぞれ数字「12345」に対応付けて文字列を変換しています。intab = aeiou outtab = 12345 trantab = str.maketrans(intab, outtab) st

  2. Python関数で辞書を返す方法とは?基本の書き方とサンプルコード

    Pythonでは、関数から辞書(dict)を返す方法がいくつかあります。ここでは、最も基本的なパターンを中心に、具体的なサンプルコードとともに分かりやすく解説します。 基本の方法:dict()で辞書を作成してreturnする まずは、関数内でdict()コンストラクタを使って空の辞書を生成し、キーと値を追加したうえでreturn文で返す方法です。 # この関数は辞書を返します def foo(): d = dict() d[str] = Tutorialspoint d[x] = 50 return d print(foo()) 実行結果 {x: 50,