相关疑难解决方法(0)

为什么vector <bool>不是STL容器?

Scott Meyers的书第18项有效STL:50改进您对标准模板库的使用的具体方法说避免vector <bool>因为它不是STL容器而且它实际上并不存在bool.

以下代码:

vector <bool> v; 
bool *pb =&v[0];
Run Code Online (Sandbox Code Playgroud)

不会编译,违反STL容器的要求.

错误:

cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
Run Code Online (Sandbox Code Playgroud)

bool返回类型应该是T&,但为什么它是特殊情况vector<T>::operator []

什么是T&真正组成的呢?

该项目进一步说:

deque<bool> v; // is a STL container and it really contains bools
Run Code Online (Sandbox Code Playgroud)

这可以用作替代品vector<bool>吗?

有人可以解释一下吗?

c++ containers stl vector bitvector

85
推荐指数
5
解决办法
4万
查看次数

为什么std :: vector <bool>没有.data()?

std::vector<bool>C++ 11 23.3.7/1中所规定的,特殊化并未声明数据成员(例如,此处此处提及).

问题是:为什么std :: vector没有.data()?这就是为什么bool矢量没有连续存储在内存中的问题.不这样做有什么好处?

为什么不能返回指向bool数组的指针?

c++ memory boolean vector contiguous

14
推荐指数
1
解决办法
1121
查看次数

标签 统计

c++ ×2

vector ×2

bitvector ×1

boolean ×1

containers ×1

contiguous ×1

memory ×1

stl ×1