迭代器的大小是否与其容器的大小正相关?

acg*_*ant 1 c++

例如,std::vector<std::vector<int>>::iterator大于std::vector<int>::iterator

Bri*_*ian 5

标准库迭代器类型的定义(以及它们的大小)是实现定义的.这有可能sizeof(vector<T>::iterator)取决于T.但是,在实践中,情况往往并非如此.vector<T>::iterator在实践中只是一个包装T*.同样,list<T>::iterator通常是指向列表节点的指针的包装器.某些类型(如deques)可能具有更复杂的迭代器,但大小仍不太可能依赖于模板参数.

(编辑:对于std::array迭代器一个指针.)

  • 由于`std :: vector <bool>`的奇怪特化,`std :: vector <bool> :: iterator`可能与正常大小不同. (6认同)