c++ 中vector的应用

一、向量的介绍

  向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版,是可变长的动态数组,支持随机访问迭代器,所有 STL 算法都能对 vector 进行操作。
  在使用它时, 需要包含头文件 vector, #include< vector>

二、vector声明及初始化

vector 型变量的声明以及初始化的形式也有许多, 常用的有以下几种形式:

	 	vector<int> a ;                                //声明一个int型向量a
        vector<int> a(10) ;                            //声明一个初始大小为10的向量
        vector<int> a(10, 1) ;                         //声明一个初始大小为10且初始值都为1的向量
        vector<int> b(a) ;                             //声明并用向量a初始化向量b
        vector<int> b(a.begin(), a.begin()+3) ;        //将a向量中从第0个到第2个(共3个)作为向量b的初始值
        
        int a[5] = {0, 1, 2, 3, 4};
        vector<int> v4(a, a+5);			//将数组n的前5个元素作为向量v4的初值,指定地址时,为首元素地址到最后一个元素的下一个地址。
        vector<int> v4(a, *(&a + 1));	//将整个数组a中的元素作为v4初始值
        vector<int> v4(&a[1], &a[4]) ;  //将a[1] - a[4]范围内的元素作为向量a的初值,不包含a[4]
三、元素输入与访问

元素的输入和访问可以像操作普通的数组那样, 用cin>>进行输入, cout<<a[n]这样进行输出:
示例:

#include <iostream>
#include <vector>
using namespace std;
int main() 
{	
	int arr[] = {1,2,3,4,5};
	vector<int> a1(&arr[1],&arr[4]);
	int size_a1 = a1.size();
	cout<<"a1 size is:"<<size_a1<<endl;
	cout<<"a1 is:";
	for(int i=0;i<size_a1;i++)
	{
		cout<<" "<<a1[i];
	}
	cout<<endl;
	return 0;
}

在元素的输出上, 还可以使用遍历器(又称迭代器)进行输出控制。在 vector b(a.begin(), a.begin()+3) ; 这种声明形式中, (a.begin()、a.begin()+3) 表示向量起始元素位置到起始元素+3之间的元素位置。(a.begin(), a.end())则表示起始元素和最后一个元素之外的元素位置。
向量元素的位置便成为遍历器, 同时, 向量元素的位置也是一种数据类型, 在向量中遍历器的类型为: vector::iterator。 遍历器不但表示元素位置, 还可以再容器中前后移动。

在上例中讲元素全部输出部分的代码就可以改写为:
  //全部输出
    vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

*t 为指针的间接访问形式, 意思是访问t所指向的元素值。

四、元素输入与访问
  1. a.size() //获取向量中的元素个数
  2. a.empty() //判断向量是否为空
  3. a.clear() //清空向量中的元素
  4. a = b ; //将b向量复制到a向量中
  5. 比较
    保持 ==、!=、>、>=、<、<= 的惯有含义 ;
    如: a == b ; //a向量与b向量比较, 相等则返回1
  6. 插入 - insert
      a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
      a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素)

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值