学习笔记--Vector容器(C++)
STL基本概念
- 
STL(Standard Template Library,标准模板库) 
- 
STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator) 
- 
容器和算法之间通过迭代器进行无缝连接。 
- 
STL 几乎所有的代码都采用了模板类或者模板函数 
STL六大组件
STL大体分为六大组件,分别是:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器
容器:置物之所也
STL容器就是将运用最广泛的一些数据结构实现出来
常用的数据结构:数组, 链表,树, 栈, 队列, 集合, 映射表 等
这些容器分为序列式容器和关联式容器两种:
序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。 关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系
vector基本概念
功能:
- 
vector数据结构和数组非常相似,也称为单端数组 
vector与普通数组区别:
- 
不同之处在于数组是静态空间,而vector可以动态扩展 
动态扩展:
- 
并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间 
- 
vector容器的迭代器是支持随机访问的迭代器 
vector构造函数
- 
vector<T> v;//采用模板实现类实现,默认构造函数
- 
vector(v.begin(), v.end());//将v[begin(), end())区间中的元素拷贝给本身。
- 
vector(n, elem);//构造函数将n个elem拷贝给本身。
- 
vector(const vector &vec);//拷贝构造函数。
vector赋值操作
- 
vector& operator=(const vector &vec);//重载等号操作符
- 
assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
- 
assign(n, elem);//将n个elem拷贝赋值给本身。
vector容量和大小
- 
empty();//判断容器是否为空
- 
capacity();//容器的容量
- 
size();//返回容器中元素的个数
- 
resize(int num);//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。//如果容器变短,则末尾超出容器长度的元素被删除。 
- 
resize(int num, elem);//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。//如果容器变短,则末尾超出容器长度的元素被删除 
vector插入和删除
- 
push_back(ele);//尾部插入元素ele
- 
pop_back();//删除最后一个元素
- 
insert(const_iterator pos, ele);//迭代器指向位置pos插入元素ele
- 
insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele
- 
erase(const_iterator pos);//删除迭代器指向的元素
- 
erase(const_iterator start, const_iterator end);//删除迭代器从start到end之间的元素
- 
clear();//删除容器中所有元素
vector数据存取
- 
at(int idx);//返回索引idx所指的数据
- 
operator[];//返回索引idx所指的数据
- 
front();//返回容器中第一个数据元素
- 
back();//返回容器中最后一个数据元素
vector互换容器
- 
swap(vec);// 将vec与本身的元素互换
总结:swap可以使两个容器互换,可以达到实用的收缩内存效果
vector预留空间
reserve(int len);//容器预留len个元素长度,预留位置不初始化,元素不可访问。
总结:如果数据量较大,可以一开始利用reserve预留空间
Vector存放自定义数据类型
Vector容器嵌套容器
 
                    
                

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号