知られているように、Experimental C++ にはトランザクション メモリ TS (ISO/IEC TS 19841:2015) があります。
コンテナー専用としてoperator[]
宣言: , , , , _transaction_safe
std::vector
std::unordered_map
std::unordered_multimap
std::unordered_set
std::unordered_multiset
std::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::map
std::set
unordered_map
unordered_set
begin
また、 andのend
メンバー関数のすべてのバリアントの宣言に「transaction_safe」を追加するのはなぜstd::map
ですかstd::set
?
イテレータbegin
とは、またはend
には非常に必要ですが、連想配列には必要ありません。連想配列では、検索または検索と変更の機能が必要でした: 、、、および。それらがなければ意味がありません。std::array
std::vector
std::list
find
at
insert
erase
operator[]
注文された std::map と注文された std::set が transaction_safe に招待されないのはなぜですか?