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

  

posted @ 2020-02-08 15:41  Kimishima-Kana  阅读(152)  评论(0编辑  收藏  举报