STL vector<bool>总结
来源:互联网 发布:数据挖掘的发展现状 编辑:程序博客网 时间:2024/04/30 13:37
std::vector<bool>
template < class T, class Alloc = allocator<T> > class vector; // generic templatetemplate <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
- C++98
- C++11
void flip() noexcept;
Parameters
noneReturn value
none原文地址:http://blog.csdn.net/qq844352155/article/details/38710297
———————————————————————————————————————————————————
std::vector<bool>::swap
- C++98
- C++11
void swap (vector& x);
static void swap (reference ref1, reference ref2) noexcept;
另一个静态的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
——————————————————————————————————————————————————————————————————
- STL vector<bool>总结
- STL hash<vector<bool>>
- STL容器之vector<bool>
- vector<bool>STL中的陷阱
- STL vector<bool>的介绍(1)
- STL vector<bool>中的reference(2)
- STL vector<bool>中的swap方法(4)
- Effective STL 18 avoid using vector<bool>
- C++ STL vector 总结
- 【STL】vector 用法总结
- STL之 vector 总结
- STL vector用法总结
- vector bool
- vector<bool>
- STL vector<bool>中的flip方法(3)
- effective stl 第18条: 避免使用vector<bool>
- STL之vector用法总结
- STL中vector的总结
- IOS view 自动旋转
- ALSA --- amixer控制声卡驱动实现Line-in功能
- Sublime Text 2安装插件的方法
- 使用接插件需要注意的问题
- [function.fopen]: failed to open stream
- STL vector<bool>总结
- STM8S207使用外部24M晶振不起振的解决办法
- Sublime Text 2 快捷键(PC & MAC)
- Chrome 浏览器字体不显示问题
- STL算法---堆算法
- 应用程序开发总结(3)--版本
- System 表空间大且使用率高
- 那些我最喜欢的网络营销工具们。
- DEDECMS导航栏的顶级栏目、二级栏目及三级栏目的调用