- Vector
- Deque
- List
- Set and Multiset
- Map and Multimap
- stack
- Queue
主要介绍:Vector和List
一、Vector(1)
vector 是一种支持动态空间大小调整的动态数组(相比较于数组而言)
Vector(2)
其中的拷贝std::vectorcopyOdv(v);//所以vector也是类模板
vector(3)
添加元素:push_back()//将元素加到尾部
vector(4)
判断是否为空empty()
获取vector大小size()
vector(5)
访问元素两种方式:
①at():进行边界检查,访问越界会抛出异常
②[]重载操作符,访问效率高,不会检查越界问题
vector(9)
删除vector中元素,erase()函数
首先介绍algorithm头文件中的remove_if函数,
v.erase(std:remove_if(
v.begin(),//iterator,一个指针指向vector首部
v.end(),//iterator,一个指针指向vector首部
ContainString(L"C++")//条件函数
),v.end());
remove_if是否整整remove了vector中的元素呢?
答案是否定的
其实是erase函数删掉了ContainString()中得到的iterator中的元素。
二、Deque(1)
双向队列,Deque采用了大块分配内存的方法。
三、List(1)
双向链表
在内存中不是连续分配
优点:插入、删除、替换效率极高
缺点:查找、存取等定位操作,效率低。
小结:可以更加实际应用对于操作的要求来使用链表,例如:如果查、存取用的少,插、删、换用的多就可以考虑用链表
指定iterator:
std::liststd::wstring::const_iterator it = I.begin();//指定list首部的迭代器指针。
粘连list(splice)
list1粘连到list2的头部,同时list2被清空
std::liststd::wstring::const_iterator it1 = list1.begin();//迭代器看做定位功能
list1.splice(it1,list2);
splice(要粘连到目标链表的位置,源链表,原链表的索引)