vector 容器

C++ vector 容器
一、什么是vector?
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
二、容器特性
1.顺序序列
顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。
2.动态数组
支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。提供了在序列末尾相对快速地添加/删除元素的操作。
3.能够感知内存分配器的(Allocator-aware)
容器使用一个内存分配器对象来动态地处理它的存储需求。
三、基本用法
#include < vector>
using namespace std;
四、简单介绍
Vector<类型>标识符
Vector<类型>标识符(最大容量)
Vector<类型>标识符(最大容量,初始所有值)
Int i[5]={1,2,3,4,5}
Vector<类型>vi(I,i+2);//得到i索引值为3以后的值
Vector< vector< int> >v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过

五、实例

#include <vector>
#include <iostream>
using namespace std;
void vector1()
{
    vector<int> obj;
    for (int i=0 ;i<10;i++)
    {
        obj.push_back(i);//push_back 在数组的最后添加一个数据
        cout<<obj[i]<<",";
    }
    cout<<endl;
    cout<<obj.size();
    for (int i=0;i<5;i++)
    {
        obj.pop_back();//void pop_back():删除向量中最后一个元素
    }
    cout<<endl;
    cout<<obj.size();
    cout<<endl;
    for (int i=0;i<obj.size();i++)
    {
        cout<<obj[i]<<",";
    }
    obj.clear();//清除容器中所以数据
    cout<<endl;
    cout<<obj.size();
}
#include <algorithm>
void vector2()
{
    vector<int> obj;
    obj.push_back(1);
    obj.push_back(3);
    obj.push_back(0);
    sort(obj.begin(),obj.end());//从小到大排列
    for (int i=0;i<obj.size();i++) 
    {
        cout<<obj[i]<<",";
    }
    cout<<endl;
    reverse(obj.begin(),obj.end());//从大到小排列
    for (int i=0;i<obj.size();i++) 
    {
        cout<<obj[i]<<",";
    }    
}
void vector3()
{
    //访问 (直接数组访问&迭代器访问)
    //顺序访问
    vector<int>obj;
    for(int i=0;i<10;i++)
    {
        obj.push_back(i);   
    }  
    cout<<"直接利用数组:"; 
    for(int i=0;i<10;i++)//方法一 
    {
        cout<<obj[i]<<" ";
    }
    cout<<endl; 
    cout<<"利用迭代器:" ;
    //方法二,使用迭代器将容器中数据输出 
    vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 
    for(it=obj.begin();it!=obj.end();it++)
    {
        cout<<*it<<" ";
    }
}

void vector4() 
{
    //二维数组两种定义方法
    int N=5, M=6; 
    vector<vector<int> > obj(N); //定义二维动态数组大小5行 
    for(int i =0; i< obj.size(); i++)//动态二维数组为5行6列,值全为0 
    {
        obj[i].resize(M); //resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
    }
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<endl;
    }
}

void vector5()
{
    int N=5, M=6; 
    vector<vector<int> > obj(N, vector<int>(M)); //定义二维动态数组5行6列 
    for(int i=0; i< obj.size(); i++)//输出二维动态数组 
    {
        for(int j=0;j<obj[i].size();j++)
        {
            cout<<obj[i][j]<<" ";
        }
        cout<<"\n";
    }
}

 

posted @ 2023-03-16 14:38  jhtchina  阅读(49)  评论(0)    收藏  举报