vector内部实现2】的更多相关文章

写vector的内部方法 #include<vector> using std::vector; //写一个动态内存 class CA{ int a; public: CA(int i){ i = a; } CA(); }; template <class T> class CStack { T pBuff[]; public: CStack(); ~CStack(); void push(T const& val);//入栈 void pop();//出栈 T GetTo…
push_back 往动态数组的内部进行添加数据 pop_back 往动态数组的尾部进行删除数据 resize  讲元素的数量len改成num个数量  如果size()变大了,多出来的将用默认构造来创建 assert(nullptr);断言函数 可以解决出错问题 和return,throw相似 进行处理异常数据 reserve(int n);如果容器的容量不足扩大容量 maxSize=maxSize+(maxSize>>1)>1?(maxSize>>1):1)  内存不够会发…
1    vector构造函数:也就是如何对一个vector对象进行初始化 ////////////////////////////代码//////////////////////////////////////  explicit vector ( const Allocator& = Allocator() );  explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator()…
vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像指针一样被操作,由于它的特性我们完全可以将vector看做动态数组. 特点: 1.指定一块如同数组一样的连续存储,但空间可以动态扩展.即它可以像数组一样操作,并且可以动态操作. 2.随机访问方便,它像数组一样被访问. 3.节省空间,因为它是连续存储,在存储的区域是没有被浪费的,当然未存储的区域实际是浪费的. 4.在内部插入删除效率非常低,这样的操作基本是被禁止的.vector被设计成只能在后端进行追加和删除…
遍历List的多种方式 在讲如何线程安全地遍历List之前,先看看通常我们遍历一个List会采用哪些方式. 方式一: for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } 方式二: Iterator iterator = list.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } 方式三: for…
 什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array,  链表list,  树tree,  栈stack,  队列queue,  散列表hash table,  集合set.映射表map 等等.容器便是容纳这些数据结构的.这些数据结构分为序列式与关联式两种,故容器也分为序列式容器和关联式容器.   (图来自<STL源码剖析>) vector容器 1.  vector是STL提供的一…
顺序性容器: 向量 vector :   是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组.在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即capacity ()函数的返回值.当存储的数据超过分配的空间时vector 会重新分配一块内存块,但这样的分配是很耗时的,在重新分配空间时它会做这样的动作: 首…
//    vector<int> vec; //    for(int i = 0; i < 10; i++) //    { //        vec.push_back(5); //    } // //    vector<int>::iterator itr; // //    for(itr = vec.begin(); itr != vec.end();) //    { //        if(*itr == 5) //        { //      …
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2. vector内部其实包含了三个指针, 如下图: resize()------改变 finish 指针 reserve()----改变 end_of_storage 指针 3. [finish, end_of_storage)中的内存是没有调用过vector中的元素的构造函数的. 所以, 如下的这…
感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.html 不过那边是转载自<effective stl>. std::vector很方便,但有时调用的函数的参数规定是数组,需要将vector转为数组,另外开辟一个空间,将vector一项项复制过去代价过大,可用下面的方法. 给定一个 vector<int>   v;         表达…