今時の C++ で連想配列を扱う

今時と書いたんですがあんまり今時の C++ は知らないのでもっといい書き方ってありますかね?

C++ の例が載っていなかったので簡単にかいてみました。
一応 C++17 で動作するコードとなっています。

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>

int
main(){
    using namespace std::literals;

    // 出力用関数
    auto output = [](auto hash) {
        std::cout << "---" << std::endl;
        for(auto [key, value] : hash){
            std::cout << "key = " << key << ", value = " << value << std::endl;
        }
    };

    // 連想配列の定義
    std::unordered_map hash{
        std::pair{ "apple"s, "りんご"s },
        std::pair{ "peach"s, "もも"s }
    };
    // 明示的に型を定義する場合
    // std::unordered_map<std::string, std::string> hash{
    //    // std::pair は不要
    //    { "apple"s, "りんご"s },
    //    { "peach"s, "もも"s }
    // };

    // 参照
    auto a = hash["apple"s];
    std::cout << hash["apple"s] << std::endl;

    // 更新
    hash["apple"s] = "林檎";
    output(hash);

    // 追加
    hash["pear"s] = "なし"s;
    output(hash);

    // 削除
    hash.erase("pear");
    output(hash);

    return 0;
}
// output
// りんご
// ---
// key = peach, value = もも
// key = apple, value = 林檎
// ---
// key = apple, value = 林檎
// key = pear, value = なし
// key = peach, value = もも
// ---
// key = apple, value = 林檎
// key = peach, value = もも

C++17 でも連想配列専用のリテラルはないんですが、上記のように書くことで割と簡単に定義することができますね。
どうせなら {} に対してユーザ定義リテラルとか定義できるようにならないですかね…。
ちなみに C++11 で標準ライブラリに <unordered_map> が追加されましたが C++ 以前でも標準ライブラリには <map> があるのでそちらを利用することもできます。