《算法一》(STL概述)
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;
}

浙公网安备 33010602011771号