泛型算法的概念
泛型算法提供了许多可作用于容器类以及数组类型上的操作。这谁算法之所以被称为泛型,是因为它们和它们想要操作的元素类型无关。它们同样也和容器类型无关。 ————【美】Stanley B . Lippman
Iterator(迭代器|泛型指针)
# include <iostream>
# include <vector>
using namespace std;
int main()
{
int arry[5] = {1,2,3,4,5};
vector<int> svec (arry, arry + 5);
for (vector<int>::const_iterator iter = svec.begin(); iter != svec.end(); ++iter)
{
cout << *iter << ' ';
}
}
迭代器的声明方式为:容器名<类型名>::iterator 变量名
欲通过iterator取得元素值,一般用指针提领。
容器的共同操作
- ==和!=运算符,返回true或false
- =运算符,将某个容器复制给另一个容器
- empty()会在容器无任何元素时返回true,否则返回false
- size()返回容器内目前持有的元素个数
- clear()删除容器的所有元素
- begin()都是指向容器的第一元素。
- end()都是返回容器的最后一个元素的下一个位置;
- insert(),将单一或者某一个范围内的元素插入容器。
- erase(),都是将容器内的单一元素或者某个范围内的元素,删除。
顺序性容器
vector
vector以一块连续内存来存放元素。适合对其进行随机访问但不适合对最后一个元素以外的任意元素进行插入和删除操作。
list
list中的每个元素都包括value、back指针、front指针适合元素的插入删除操作但不适合随机访问。
deque
与vector相似,但对于前端和末端元素插入和删除效率高。
操作函数
- push_back()和pop_back() 在末端添加删除元素
- push_front()和pop_front() 在前端添加删除元素
- iterator insert(iterator position,elemType value)将value插入position之前。
- void insert(iterator position,int count,elemType value)在position之前插入count个元素,这些元素的值都和value相同。
- void insert(iterator1 position,iterator2 first,iterator2 last)可在position之前插入[first,last)所表示的各个元素。
- iterator erase(iterator posit)删除posit所指元素。
- iterator erase(iterator first,iterator last)删除[first,last)范围内元素。