只记载本人在ACM中常用的函数。
vector,相当于动态数组,数组大小可变。声明vector以后,自动在内存中分配一块连续的内存空间进行数据存储。
vector在内部进行插入、删除操作时间复杂度O(n)。
1、初始化
vector<int> v1; //空的vector
vector<int> v(5, 42); //vector含有5个42
2、常用运算符
[], ==, !=, <=, >=, <, 和 >均可正常使用
3、back返回最后一个元素
4、begin返回第一个元素的迭代器
5、clear清空所有元素
6、vector为空时返回真,否则返回假
7、end返回最末元素的迭代器
8、erase删除
iterator erase( iterator loc ); //删除loc处的元素
iterator erase( iterator start, iterator end ); //删除start和end之间的元素
9、front返回第一个元素的值
10、insert
iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
void insert( iterator loc, size_type num, const TYPE &val ); //在指定位置loc前插入num个值为val的元素
void insert( iterator loc, input_iterator start, input_iterator end ); //在指定位置loc前插入区间[start, end)的所有元素
11、pop_back移除最后一个
12、push_back在vector最后添加一个元素
13、size返回vector中元素的数量个数
14、accumulate,累加。accumulate(iterator a, iterator b, const TYPE &val)。将a和b之间的元素累加起来,初值赋为val。比如vector<int> ans; int t = accumulate(ans.begin(), ans.end(), 2),则t = sum{ans} + 2。比如vector ans = {"tt", "xx"}; string s = accumulate(ans.begin(), ans.end(), string(""));则s = "ttxx"。注意,如果val和vector中所装元素类型不同,会将vector里的元素转化成val的类型。
15、unique函数,unique(v.begin(), v.end()),将v中重复元素全放在v的最后,比如122333会变成123233,然后返回第一个重复元素的位置。如果想删除v中所有重复元素,则v.erase(unique(v.begin(), v.end()), v.end())。还发现了一个网上的博文里面没有看到的问题,就是使用unique函数之前要先排序。