一部のバイナリツリーデータ構造(Splayツリーなど)は、最近アクセスした項目をルートに向かって移動させるために、その後のルックアップ時間を短縮することができる。読み取り専用操作(Splayツリーのような)の後にstd :: mapの再調整が可能です
標準容器(std::map
、std::set
)はこれを許可されていますか?
少なくとも1つの懸念は、スレッドの安全性です。以前は、標準のコンテナでのみ読み取り専用の操作を行っていれば、mutex/locksなどを導入しなくても、複数のスレッドからこの操作を行うことができたと思いました。これを再考する必要があるかもしれません。
通常、標準のツリーコンテナには赤黒のツリーが使用されており、これらのデータ構造は通常読み取り時に変更されないことがわかります。しかし、修正を加えた仮想的な実装が適合するだろうか?
私のC++標準fooは改善が必要ですが、現在の標準がコンテナのスレッドセーフティを扱っているかどうかはわかりません。 c++0x
でこれは違いますか? c++0x
ドラフトから
この実装に依存しませんか?標準はインタフェースと期待される動作を定義するだけではありませんか? – Matt
@Matt H:私は、これが "観察可能な振る舞い"(あるいは標準がそれを置く)であると考えています - 標準化された方法で対処すべきものもあります。私の質問の一部は、それが対処されているかどうかです。 –