迭代器:迭代器是泛化的指针(但并不是指针),用法和指针类似,利用迭代器对容器中的元素序列的操作。格式举例list<type>::itrerator it;

迭代器本身是一个对象,这个对象可以遍历STL容器内部全部的对象,它能够反复地对STL容器内容进行访问。迭代器所提供的基本操作如下所示:

a.获取当前被指向的元素,用“*” 或者“->”

b.指向下一个元素,迭代器的增量使用运算符“++”

c.相等,使用运算符“==”

1.empty()函数

empty:空的;empty()函数返回值为bool类型,用于判断容器是否为空,若为空,则返回真(true/1),若不为空,则返回假(false/0);

2.size()函数:返回容器内元素个数

3.pair

在头文件utility中(ps:无需在写此头文件,在map中包含有),定义了一个类模板pair,用于将两个数据组成一个数据,用来表示一个二元组或一个元素对,两个数据类型可为不同类型。

eg:pair<int, char> p1;      make_pair(1, 'a');    cout << p1.first << " " << p1.second << endl; //也可定义pair类型数组

4.stack(堆栈)与queue(队列)容器

stack(堆栈):定义在头文件<stack>中,定义格式为:stack<type> s; (ps:先入栈的后出栈)

入栈:s.push(value);

出栈:s.pop();//只删除顶部元素,并不返回该元素

访问栈顶:s.top()//返回栈顶元素,即为最后入栈的元素

queue(队列):定义在头文件<queue>中,格式:queue<type> q;(ps:入队顺序排列)

入队:q.push(value); //将数据接到队列的末端

出队:q.pop();//弹出队列中的第一个元素,但并不会返回该元素

访问队首元素:q.front(),即最早压人队列的元素

访问队尾元素:q.back(),即最后被压入队列的元素

5.vector(向量)容器:定义在头文件<vector>中,格式为vector<type> v;

关于capacity(容器容量):当vector容器容量不够时,在申请空间时,申请后的大小是以前的2倍,且在删除容器内元素时,并不会将被删除元素的空间释放(目的提高效率)。调用v.capacity()用于返回容器容量

尾部插入与删除:v.push_back(value);尾部插入元素,v.pop_back();尾部删除元素

插入(insert)与删除(erase):v.insert(pos, value)在pos位置上插入元素value,返回新数据的位置,v.erase(pos),移除pos位置上的元素,返回下一个数据的位置(该种插入与删除效率较低,慎用!且pos为迭代器类型,不可使用数字)

获取头部与尾部元素:v.front();和v.back();获取头部与尾部的元素

v.begin();与v.end();获取头部与尾部的迭代器(ps:end()是返回最后一个元素后的迭代器,即改迭代器指向的容器位置并未有元素或元素已被删除);

6.deque(双端队列):定义在头文件<deque>中,格式为deque<type> d;与vector(向量)类似;外加如下:

头部添加与删除元素:d.push_front(value);  向头部插入元素;d.pop_front()删除头部元素

8.set(集合)容器与multiset(允许出现重复元素的集合)容器:分别定义在头文件<set>与<multiset>中,用法相似,以下以set为例。格式为set<type> s;

查找与统计:s.find(value);用与查找value元素,返回值为迭代器,若找到返回该元素位置,若未找到,则返回s.end();

s.count(value);用于统计value的个数

插入与删除:s.insert(value)插入value元素;s.erase(value),删除value元素

ps:该容器在插入元素后会自动排序默认为ASCII值升序排序,若改变排序方式可在定义式写为set<type, greater<type> > s;(降序),less<>(升序);

9.map(关联数组)容器与multimap(允许出现重复key值的关联数组)容器:分别定义在头文件<map>与<multimap>中,用法类似,用与存储元素对(key-value)映射类型,可使用键(key)作为下标来获取对应的值。关联的本质就在于元素的值与某个特定的键相关联,而不是通过在数组中的位置来获取。格式为map<type, type> m;

使用pair<>构建键值对对象   m.insert(pair<type, type>(value, value));

使用make_pair()函数构建键值对对象:m.insert(make_pair(value, value));

使用value_type标志 : m.insert(map<type, type>::value_type(value, value));