c++向量

内容综合整理自:http://www.cnblogs.com/mr-wid/archive/2013/01/22/2871105.html

                                http://blog.csdn.net/rocispeng/article/details/7958358

向量(vector)

一、接口与实现

向量:数组的抽象与泛化,由一组元素按线性次序封装而成各元素与[0,n)内的秩一一对应

           元素的类型不限于基本类型

           操作、管理和维护更加简化、统一与安全

           可更为便捷地参加复杂数据结构的定制与实现

操作 功能 适用对象
size() 报告向量当前的规模(元素总数) 向量
get(r) 获取秩序为r的元素 向量
put(r,e) 用e替换秩为r元素的数值 向量
insert(r,e) e作为秩为r元素插入,原后继元素一次后移 向量
remove(r) 删除秩为r的元素,返回该元素中原存放的对象 向量
disordered() 判断所有元素是否已按非降序排列 向量
sort() 调整各元素的位置,使之按非降序排列 向量
search(e) 查找目标元素e,返回不大于e且秩最大的元素 有序向量
deduplicate() 剔除重复元素 向量
uniquify 剔除重复元素 有序向量
traverse 遍历向量并做统一处理所有元素,处理方法由函数对象指定 向量
find(e) 查找目标元素e 向量

二、向量

vector是c++标准程序库中的一个类,可视为会自动扩展容量的数组,以循序(Sequential)的方式维护变量集合。vector的特色包括支持随即存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时。vector是c++标准程序库中的众多容器之一,除此之外还有list、set、map、...等等。vector以模板(泛型)方式实现,可以储存任何类型的变量,包括用户自定义的数据型态,例如:它可以是放置整数(int)型态的vector、也可以是放置字符串(string)型态的vector,活着放置用户自定类型(user-defined class)的vector。
vector定义于头文件中,与其他STL组建一样,vector属于std命名空间
vector是c++标准程序库里最基本的容器,大多数情况下都很有效率。vector设计之处即是为了改善C语言原生数组的种种缺失与不便,而提供一种更有效、更安全的数组。vector的使用接口可以模拟C语言原生数组,较明显的差异在于储存器管理,原生数组必须在声明数组的时候明确指定数组长度(例如 int a[5]),但是vector不需要指定,而是会在运行期依据状况自我调整长度,动态增大容量
vector的表现一如数据结构中的数组,允许随即存取,以索引值访问任一元素只要花费常数时间O(1),若在vector集合中间增加或删除元素时间复杂度是线性时间O(n),较为费时。虽然C++标准并没有规定实现方式,但大多数vector内部均使用动态数组方式实现。

有点点像Java里的arrylist有没有嘿嘿  “不*明*真*相的围*观群*众” 槑槑槑槑呆槑槑槑槑槑槑槑槑……

三、使用说明

声明

使用vector之前,必须先 #include
声明一个vector变量的方法如下:
  std::vectorv;
T是vector要存储的对象集合的类型,该vector的变量名称是v。T可以是任何符合Assignable条件的类型,包或用户自定义类型。如果T不符合Assignment或者复制成本很高昂,可以考虑使用T*来代替T

取代数组使用:

 
#include 
#include
using namespace std;

int main()
{
    std::vector v;//T即是贴出相应的向量类型
    v.push_back(1);//=======>v[o]==1
    v.push_back(2);
    v.push_back(3);
    for(int i=0;i<3;i++)
    {
        std::cout<
c++向量_第1张图片
vector 有四种定义方式:
    1.vector a(10);    //定义了10个整数元素的向量,但没有给出初值,因而其值是不确定的
    2.vectorb(10,1)   //定义了10个整数元素的向量,并且给每个元素的初值赋值为1
    3.vectorc(b)        //用另一个线程的向量来创建一个向量
    4.vectord(b.begin(),b.begin()+3);    //定义了其值依次为b向量中第0到第2个(共三个)元素的向量

长度/容量

#include 
#include
#include
#include
#define SETW_1 10
#define SETW_2 6
#define SETW_3 10
using namespace std;

typedef vector Vint;
void PrintVectorInfo(Vint& v)
{

    cout<



你可能感兴趣的:(c++向量)