C++之vector

                          C++之vector

目录             

前言

基本操作

1)头文件  

2)创建vector对象  

3)尾部插入元素

4)尾部删除元素

5)向向量中添加元素

6)使用下标访问元素

7)访问首尾元素

8)使用迭代器访问元素

9)插入元素

10)删除元素

11)向量大小

12)清空  

13)判断是否为空

14)交换向量

15)赋值

重要算法

1)sort(vec.begin(),vec.end()); 

2)reverse(vec.begin(),vec.end());

3)copy(vec.begin(),vec.end(),b.begin()+1);

4)find(vec.begin(),vec.end(),10);

vector构建动态二维数组


前言

    在C++中,vector是一个十分有用的容器。

    作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

    vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

基本操作

1)头文件  

#include<vector>

2)创建vector对象  

vector<int> vec;

3)尾部插入元素

 vec.push_back(a);

4)尾部删除元素

vec.pop_back();

5)向向量中添加元素

vector<int> a;  
for(int i=0;i<10;i++)  
    a.push_back(i); 

6)使用下标访问元素

cout<<vec[0]<<endl;  //记住下标是从0开始的

7)访问首尾元素

vec.begin() 返回一个迭代器,它指向容器vec的第一个元素

    vec.end() 返回一个迭代器,它指向容器vec的最后一个元素的下一个位置

    vec.front()返回容器vec的第一个元素的引用

    vec.back()返回容器vec的最后元素的引用

8)使用迭代器访问元素

vector<int>::iterator it;
    for(it=vec.begin(); it!=vec.end(); it++)
        cout<<*it<<endl;

9)插入元素

vec.insert(vec.begin()+i, a);  //在第i+1个元素前面插入a
vec.insert(vec.begin()+1,5);  //在vec的第1个元素(从第0个算起)的位置插入数值5,如vec为1,2,3,4,插入元素后为1,5,2,3,4
vec.insert(vec.begin()+1,3,5);//在vec的第1个元素(从第0个算起)的位置插入3个数,其值都为5
vec.insert(vec.begin()+1,b+3,b+6);//b为数组,在vec的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8,插入元素后为1,4,5,9,2,3,4,5,9,8

10)删除元素

vec.erase(vec.begin()+2);  //删除第3个元素
vec.erase(vec.begin()+1,vec.begin()+3);  //删除vec中第1个(从第0个算起)到第2个元素,也就是说删除的元素从vec.begin()+1算起(包括它)一直到vec.begin()+3(不包括它)
vec.erase(vec.begin()+i, vec.end()+j); //删除区间[i,j-1];区间从0开始

11)向量大小

 vec.size();

12)清空  

vec.clear();

13)判断是否为空

vec.empty();  //判断vec是否为空,空则返回ture,不空则返回false

14)交换向量

vec.swap(b);  //b为向量,将vec中的元素和b中的元素进行整体性交换

15)赋值

vec.assign(b.begin(), b.begin()+3);  //b为向量,将b的0~2个元素构成的向量赋给vec
vec.assign(4,2);  //vec只含4个元素,且每个元素为2

重要算法

需包含头文件 #include<algorithm>

1)sort(vec.begin(),vec.end()); 

    对vec中的从vec.begin()(包括它)到vec.end()(不包括它)的元素进行从小到大排列

    可以通过重写排序比较函数按照降序比较,如下:

    定义排序比较函数:

    bool Comp(const int &a,const int &b)
    {
        return a>b;
    }

    调用时:sort(vec.begin(),vec.end(),Comp);这样就降序排序。

2)reverse(vec.begin(),vec.end());

    对a中的从vec.begin()(包括它)到vec.end()(不包括它)的元素倒置,但不排列,如vec中元素为1,3,2,4,倒置后为4,2,3,1。

3)copy(vec.begin(),vec.end(),b.begin()+1);

    把vec中的从vec.begin()(包括它)到vec.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素。

4)find(vec.begin(),vec.end(),10);

    在vec中的从vec.begin()(包括它)到vec.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置。

vector构建动态二维数组

#include <vector>
//=============================方法1=================================================

int **p = new int*[10];              //注意,int*[10]表示一个有10个元素的指针数组
for (int i = 0; i < 10; ++i)
{
	p[i] = new int[5];        //这样就构成10*5的数组
}

//=============================方法2=================================================
int i, j;
vector<vector<int>> array(5);
for (i = 0; i < array.size(); i++)
	array[i].resize(3);                  //这样就构成5*3的数组 

for (i = 0; i < array.size(); i++)       //赋值
{
	for (j = 0; j < array[0].size(); j++)
	{
		array[i][j] = (i + 1)*(j + 1);
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值