C++ vecto<bool>是vector的特化版本,他的特别支持在于:
1他不是真的stl容器;
2他保存的不是布尔类型,而是bit。
3 构造的时候内存分配不是用的传统的alloctor,而是自己的实现版本。
比较于普通的vector,他多了两个成员函数,一个flip翻转函数,一个swap,swap普通的vector也有,应该是特化了自己的版本。
vector<bool>不提供的函数 .data().emplace(),.emplace_back()
vector<bool> c{ false, true };
bool temp1= c[0];
auto temp2 = c[0];
对于temp1的初始化它其实暗含了一个隐式的类型转换。而对于temp2,它的类型并不是bool,而是一个vector< bool>中的一个内部类。当修改temp2 的值的时候,c中的元素值会跟着修改。