std::vector<bool>
template < class T, class Alloc = allocator<T> > class vector; // generic template
template <class Alloc> class vector<bool,Alloc>; // bool specialization
这个vector的行为和未特化的vector版本类似,但是有下列的变化。
- 存储的时候存储一列的bool值是没有必要的,编译器可能将每一个bool值存放在一个bit里面以优化存储空间。
- 元素的构造不使用内存分配器,而是直接在内存相应的bit里面设置其值。
- 成员方法flip和新特性的swap方法。
- 一个特别的成员类型,reference,一个类用来在容器存储内存位置访问单个bits的接口,该接口用来模仿bool的reference,反之,成员类型const_reference是一个真正的bool.
- 容器使用的指针以及迭代器类型既不必要指向也不必要符合迭代器。(这句翻译的好怪。。。),即便他们看起来应该模范他们应该做的行为。
这些变化提供了一个离奇的接口给这个特例化的vector,以及促使数据整理时的内存优化(这可能适合也可能不适合你的需要)。在任何情况下,直接实例化vector的非特例化的bool版本是不可能的。避免该限制的变通方法是使用其他的类型(char,unsigned char)或者容器(像deque)的封装类型,或者使用更远的特别的分配器类型。
特例化的版本和未特例化的版本具有相同的成员方法。除了data,emplace以及emplace_back,这些在特例化版本中不会出现。
原文地址:http://blog.csdn.net/qq844352155/article/details/38708201
———————————————————————————————————————————————————
std::vector<bool>::reference
class reference;
这个内部类是vector<bool>直接访问其元素时返回non-const引用时设计的,它使用模拟成引用的接口访问单个的bits。
———————————————————————————————————————————————————
std::vector<bool>::flip
Parameters
none
Return value
none
原文地址:http://blog.csdn.net/qq844352155/article/details/38710297
———————————————————————————————————————————————————
std::vector<bool>::swap
另一个静态的swap方法交换个别的元素(bits)被添加到vector<bool>中
Parameters
-
x
另一个vector<bool>容器,大小可能不同。
指向元素的引用,ref1的值将和ref2的值互换。
引用是一个成员类型,使用一个接口来模仿引用来访问单个的bool元素。
Return value
none
原文地址:http://blog.csdn.net/qq844352155/article/details/38710701
——————————————————————————————————————————————————————————————————
//总结的不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:coderguang@gmail.com
2014-8-27
于GDUT
——————————————————————————————————————————————————————————————————