数据结构详解之向量vector

1. vector简介

vector 实现了一个动态数组,是可实现自动增长的对象数组;
vector是一种顺序容器,支持随机访问;
vector和数组不同之处在于:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。

2. vector用法

头文件:

#include<vector>//vector的头文件

声明方法:

//定义一维数组
vector<int> vec;//创建一个空的vector
vector<int> vec1(vec);//创建一个vector vec1,并用vec去初始化vec1
vector<int> vec2(n);//创建一个含有n个数据的vector
vector<int> vec3(10,0);//创建含有10个数据的vector,并全初始化为0
//定义m*n的二维数组
vector<vector<int> > array(m); //这个m一定不能少,m行
for(int i=0;i<m;i++) //n列
{
    array[i].resize(n);
}
for(i = 0; i < array.size(); i++)//遍历赋值
{
   for (j = 0; j < array[0].size();j++) 
    {   
        array[i][j] = (i+1)*(j+1); 
    } 
}

定义特殊存储类型的vector

#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
typedef struct rect
{
    int id;
    int length;
    int width;
	//对于向量元素是结构体的,可在结构体内部定义比较函数
	//下面按id,length,width升序排序。
  bool operator< (const rect &a)  const
    {
        if(id!=a.id)
            return id<a.id;
        else
        {
            if(length!=a.length)
                return length<a.length;
            else
                return width<a.width;
        }
    }
}Rect;
 
int main()
{
    vector<Rect> vec;
    Rect rect;
    rect.id=1;
    rect.length=2;
    rect.width=3;
    vec.push_back(rect);
    vector<Rect>::iterator it=vec.begin();
    cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    
	return 0;
}

相关函数:

vec.push_back(a);//尾部插入数字
vec.pop_back(); //尾部删除数字
cout<<vec[0]<<endl;//使用下标访问
vec.size();//获得向量当前元素个数
vec.max_size();//获得向量最大容纳量
vec.clear();//清空向量
vec.empty();//判断向量是否为空(如果为空,返回1;否则返回0)
//使用迭代器访问元素
//begin(),end(),指向头元素、尾元素的指针
vector<int>::iterator it;//定义迭代器
for(it=vec.begin();it!=vec.end();it++)
    cout<<*it<<endl;
vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a;
vec.erase(vec.begin()+2);//删除第3个元素
//获取二维数组的长度
int size_row = vec.size(); //获取行数
int size_col = vec[0].size(); //获取列数

相关算法:

#include<algorithm>//算法头文件
reverse(vec.begin(),vec.end());//逆序翻转元素
sort(vec.begin(),vec.end());//默认是按升序排列,即从小到大
//自定义排序比较函数:按照降序比较
bool Comp(const int &a,const int &b)
{
    return a>b;
}
sort(vec.begin(),vec.end(),Comp);//实现降序排序
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值