STL一些基本容器
一、注意事项:
二、可遍历的容器
1.vector容器
需要用头文件#include<vector>,迭代器支持随机访问
是一种简单高效的容器,可以改变储存空间的大小,可以替代数组,又称为单端数组。
元素下标从0开始。Vector具有内存自动管理的功能,对于元素插入和删除,可以动态调整所占内存空间。
需要迭代器来联系算法和容器。v.begin()是开始元素。v.end()是最后一个元素的下一个位置。
是一种简单高效的容器,可以改变储存空间的大小,可以替代数组
Vector的定义 /1. 可以通过vector<T> v; 这是最基础的定义。 //2. 可以用vector<T> v2(v.begin(),v.end())来整段copy //3. 可以用vector<T> v3(int n,int m)初始定义为n个m。 //4. 可以通过vector<T> v4(v1)把v1整体复制给v4. 一些函数,已知vector<T> v。 // v.empty()用来判断容器是否为空。 // v.capacity(),来返回一个int类型表示容器的容量 // v.size()来返回现在容器里的元素个数。 // v.resize(int n,int m)重新指定容器的容量为n,多的部分删去,少的部分全部赋值为m,不写m就默认为0. // a.push_back(n),在容器末尾添加一个元素,值为n // a.pop_back(),在容器末尾删除元素 // a.insert(迭代器地址,int n,int m),在指定位置的前面插入n个值为m的元素,后面的元素依次后移。 // a.erase(迭代器地址),在容器任意位置删除元素, 或者a.erase(迭代器地址1,迭代器地址2),删除从1到2的全部元素 // v.front()返回容器第一个元素 // v.back()返回容器最后一个元素。 // a.swap(a,b),交换a,b的值(a,b必须是同一类型) // a.clear(),清空容器 // [i],访问第i+1个元素,即[]支持数组形式直接访问,或者用v.at(i) // v.swap(v2)实现两个容器内容的互换,即v与v2内容互换。 // v.reserve(int n)预留空间函数,预留的位置没有初始化,元素不可访问。可以事先设置容器容量,虽然vector中容量可以动态改变,但是改变多次会多次调整浪费时间。 // a.begin(),是第一个元素,a.end(),是最后一个元素后面的地址 //如果容器需要作为参数被引用,要加个取地址符。 如:void tem(vector<int>&v)
优缺点:
优点:
所占内存是一片连续的线性空间,访问元素的速度会比较快。
对于数组,vector可以动态改变大小。
缺点:
对于头部插入、删除元素效率低,因为每次操作完后面的元素还要前后挪动,数据量越大效率越低。