为什么在C++中不推荐使用vector进行示例演示?
- 内容介绍
- 文章标签
- 相关推荐
本文共计602个文字,预计阅读时间需要3分钟。
vector 不是一个STL容器,它不是一个STL容器,它不是一个STL容器!首先,vector 并不是一个通常意义上的vector容器,这个类型源于历史遗留问题。在C++98时期,就存在vector 这个类型。
vector< bool> 并不是一个STL容器,不是一个STL容器,不是一个STL容器!
首先vector< bool> 并不是一个通常意义上的vector容器,这个源自于历史遗留问题。
早在C++98的时候,就有vector< bool>这个类型了,但是因为当时为了考虑到节省空间的想法,所以vector< bool>里面不是一个Byte一个Byte储存的,它是一个bit一个bit储存的!
因为C++没有直接去给一个bit来操作,所以用operator[]的时候,正常容器返回的应该是一个对应元素的引用,但是对于vector< bool>实际上访问的是一个”proxy reference”而不是一个”true reference”,返回的是”std::vector< bool>:reference”类型的对象。
而一般情况情况下
vector< bool> c{ false, true, false, true, false }; bool b = c[0]; auto d = c[0];
对于b的初始化它其实暗含了一个隐式的类型转换。而对于d,它的类型并不是bool,而是一个vector< bool>中的一个内部类。
本文共计602个文字,预计阅读时间需要3分钟。
vector 不是一个STL容器,它不是一个STL容器,它不是一个STL容器!首先,vector 并不是一个通常意义上的vector容器,这个类型源于历史遗留问题。在C++98时期,就存在vector 这个类型。
vector< bool> 并不是一个STL容器,不是一个STL容器,不是一个STL容器!
首先vector< bool> 并不是一个通常意义上的vector容器,这个源自于历史遗留问题。
早在C++98的时候,就有vector< bool>这个类型了,但是因为当时为了考虑到节省空间的想法,所以vector< bool>里面不是一个Byte一个Byte储存的,它是一个bit一个bit储存的!
因为C++没有直接去给一个bit来操作,所以用operator[]的时候,正常容器返回的应该是一个对应元素的引用,但是对于vector< bool>实际上访问的是一个”proxy reference”而不是一个”true reference”,返回的是”std::vector< bool>:reference”类型的对象。
而一般情况情况下
vector< bool> c{ false, true, false, true, false }; bool b = c[0]; auto d = c[0];
对于b的初始化它其实暗含了一个隐式的类型转换。而对于d,它的类型并不是bool,而是一个vector< bool>中的一个内部类。

