template<class _Ty,
class _Alloc = allocator<_Ty> >
class vector
: public _Vector_alloc<_Vec_base_types<_Ty, _Alloc> >
答えて
おそらくメモリ割り当てを処理する別のクラスを継承します。そのクラスにデータメンバーがない場合、vector
は空の基本最適化の恩恵を受けることができ、_Vector_alloc
はメモリを使用しません。
_Vector_alloc allocator;
のようなデータを代わりに使用すると、そのデータメンバーは空であっても常に1バイトを取ることになります。これは、C++ではすべてのデータメンバーに個別のアドレスが必要であるためです。
イテレータ:std::vector
について
、反復子は、基本的にポインタのラッパーであり、最も可能性の高い単一のデータメンバーとしてのポインタを含みます。 http://en.cppreference.com/w/cpp/iteratorで定義されているすべての制約を満たすために、追加のデータメンバーがあります。反復子は、(例えばstd::vector<T>::iterator::value_type = T
ため)を有するべきである追加のメンバーは常にstd::iterator_traits<It>::value_type
を介してアクセスされているが
(RandomAccessIterator
、std::vector::iterator
の場合)。 std::iterator_traits<T*>::value_type = T
はSTLによって定義されているため、これにより、生ポインタもイテレータとして使用できます。したがって、ポインタは技術的には既に連続したメモリのイテレータです。
他のコンテナのイテレータは、より複雑です。たとえば、std:: unordered_map::iterator
では、アイテムは異なるバケットにグループ化されています。イテレータは別のクラスであり、コンテナから派生したものではありません。これは内部クラス(クラスの名前空間で定義されている)であるため、コンテナのプライベートメンバーにアクセスでき、論理的にコンテナの一部です。
イテレータはconst-correctではありません。は、イテレータへのconstアクセスしか持たない場合でも、常に現在指しているアイテムに非constアクセスを与えます。各コンテナクラスには、2つのイテレータクラス、すなわちstd::vector::iterator
とstd::vector::const_iterator
が含まれています。コンテナへのconstアクセスでは、それからconst_iterator
を得ることしかできません。
イテレータの概念について少し説明できますか?彼らはどのようにここに収まりますか。彼らはどこで継承階層に入っていますか?私が知る限り、彼らはコンテナの要素へのポインタとして動作します。彼らはどのようにしてコンテナの要素を指すことができますか? –
- 1. 誰かがこの継承コードを説明できますか?
- 2. C++で継承階層の一部を隠すことはできますか?
- 3. 誰も私にこの特定の継承構文を説明できますか?
- 4. 誰もがこのプログラムを説明できますか?
- 5. Nhibernateの継承を私に説明することはできますか?
- 6. 誰かがjavascriptのプロトタイプの継承を説明することができます
- 7. 階層的継承
- 8. 誰も私にこのコードを説明できますか?
- 9. 誰も私にこのコードを説明できますか?
- 10. Javascript:誰も私にこのコードブロックを説明できますか?
- 11. 誰も私にこのMATLABコードを説明できますか?
- 12. .NETのインターフェイス継承/階層 - より良い方法がありますか?
- 13. これはマルチモードで802.3のことを誰でも説明できますか?
- 14. 誰でもこのコードを説明できますか?
- 15. C誰でもこの構文を説明できますか?
- 16. 誰もこのMySQLエラーを説明できますか?
- 17. Symfony2とAngularJS。誰も私を説明することはできますか?
- 18. 誰もこのプログラムのタイププロモーションを説明でき、出力が同じ理由
- 19. 誰かが説明することができます
- 20. 継承と継承階層をキャストする
- 21. 継承の行動は、誰かが次の動作を説明でき
- 22. 誰でも私に説明することができますStandardScaler?
- 23. 誰かが私にこのコードを説明できますか?
- 24. 誰かが私にこのエラーを説明できますか?
- 25. 誰かが私にこのバッチファイルを説明できますか?
- 26. 誰でも私のコードをcで説明することができます
- 27. 春MVC - 継承階層
- 28. Neo4j javadocs継承階層
- 29. 複数の継承階層
- 30. 誰もが "視野"を説明することができます
具体的に説明します。 –
私はSTLプログラミングの初心者です。 vector_allocとvector_base_typesがここでどのように使われているか知りたい。私はビジュアルスタジオを使用しています。2015 –