STL:标准模板库
Standard Template Library
STL:
序列式容器:数据无序
vector数组
list双向链表
deque双向动态队列
关系式容器:数据有序
map
set
multimap
multiset
容器都有的功能:增删改查
容器都有的函数:
构造、析构、插入、删除
查找、拷贝构造、元素个数......
迭代器:返回地址
迭代器:用来定位容器中某个元素
数组:下标
链表:next指针
容器:智能指针
迭代器返回值:是容器中元素的地址
因此每次使用最好初始化begin()
迭代器.begin():指向第一个元素的地址
迭代器.end():指向最后一个元素的后面
容器.insert(迭代器, 数据):插入
如果容器发生改变,迭代器会失效
List:双向动态链表
数组&&链表:数组查找高效
链表插入删除高效
数组连续,链表不连续
deque:双向动态队列
介于数组和链表之间
参考代码:
# include<iostream> # include<vector> using namespace std; int main(){ vector<int> v;//制作一个模板类 vector<int>::iterator it;//创造一个迭代器对象 v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); //cout<<v[0]<<endl;//读取第一个位置 //cout<<v.at(0)<<endl;//读取第一个位置 //读取全部元素 for(int i=0; i<v.size(); i++){ cout<<v.at(i)<<" "; } cout<<endl; //v.pop_back();//删除最后一个 //使用迭代器 //迭代器刚开始指向第一个元素 it = v.begin(); it += 3;//1+3:迭代器指向第四个元素 v.erase(it);//删除迭代器指向的元素 //使用迭代器读取全部元素 //it=v.begin():迭代器初始化 for(it=v.begin(); it!=v.end(); it++){ cout<<*it<<" "; } cout<<endl; //插入元素:insert使用 it = v.begin(); it += 2;//指向第三个位置 v.insert(it, 9627);//第三个位置插入 for(it=v.begin(); it!=v.end(); it++){ cout<<*it<<" "; } cout<<endl; return 0; }