3

知られているように、Experimental C++ にはトランザクション メモリ TS (ISO/IEC TS 19841:2015) があります。

コンテナー専用としてoperator[]宣言: , , , , _transaction_safestd::vectorstd::unordered_mapstd::unordered_multimapstd::unordered_setstd::unordered_multisetstd::deque

23.4 連想コンテナ [associative]

23.4.4 クラス テンプレート マップ [マップ]

23.4.4.1 クラス テンプレート マップの概要 [map.overview]

23.4.4.1 [map.overview] で、begin メンバー関数と end メンバー関数のすべてのバリアントの宣言と、size、max_size、および empty の宣言に「transaction_safe」を追加します。

しかし、andがoperator[]宣言されtransaction_safeていないのはなぜですか(ただし、for /はあります)。std::mapstd::setunordered_mapunordered_set

beginまた、 andのendメンバー関数のすべてのバリアントの宣言に「transaction_safe」を追加するのはなぜstd::mapですかstd::set?

イテレータbeginとは、またはendには非常に必要ですが、連想配列には必要ありません。連想配列では、検索または検索と変更の機能が必要でした: 、、、および。それらがなければ意味がありません。std::arraystd::vectorstd::listfindatinserteraseoperator[]

注文された std::map と注文された std::set が transaction_safe に招待されないのはなぜですか?

4

1 に答える 1