容器概述
容器分为三大类
1.顺序容器
vector :后部插入/删除 直接访问
deque :前/后插入/删除 直接访问
list :双向链表 任意位置插入删除
2.关联容器
set : 快速查找 ,我重复元素。
multiset : 快速查找,可有重复元素。
map:一对一映射 ,无重复元素,基于关键字查找。
前两者容器可称为第一类容器。
3. 容器适配器。
stack: LIFO
queue: FIFO
priority_queue :优先级高的元素先出。
set/multimap 头文件<set>
map/multimap 头文件<map>
上述的4种容器常常以平衡二叉树的方式实现,插入和检索的时间都是O(logN)。
容器适配器简介:
1.stack 下先进后出的原则。
2.queue 先进先出。
3.priority_queue 有衔接队列,优先级最高的第一个出列。
1.所有标准容器都共有的的函数
empty 判断是否有元素
max_size 容器中最多能装多少元素
size 容器总的元素个数
swap 交换两个容器的内容
2.第一类容器的成员函数
begin 返回指向容器中第一个元素的迭代器
end 返回 指向容器最后一个元素的迭代器
rbegin 返回指向容器的第一元素前面位置的迭代器
rend 返回指向容器最后一个元素后面位置的迭代器
erase 从容器中删除一个或者几个元素
clear 从容器中删除所有元素
迭代器
第一一个容器的迭代器的方法可以是
容器类名::iterraor 变量名 ;
或者 容器类名:: const_iterraor;
迭代器的用法
#include<vector>
#include<iostream>
using namespace std;
int main(void)
{
vector<int> v;//创建存放int 的向量 ,一开始里面没有元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vertor<int >::const_iterator;//常量 迭代器
for(i = v.begin();i!v.end();i++)
{
cout<<*i<<".";
}
cout<<endl;
vertor<int>::reverse_itrator r;//反向迭代器
for(r = v,begin(); r!v.rend();r++)
cout<<*r<<'.';
cout <<endl;
vector <int >::itertor j;//非常量迭代器
for(j = v.begin(); j!= v.end();j++)
*j = 100;
for(i = v.begin(); i!=v.end();i++)
cout<<*<<",";
}
vector 是随机的迭代器便利有以下的几种做法
vertor<int> v (100)
vector<int>::value_type i;
for(i = 0;i<v.size(),i++)
{
cout<<v[i];
}
vector<int >::const_itrator ii;
for(ii = v.begin();ii != v.end();ii++)
{
cout<<ii;
}