c++中的vector()的运用模板

本文深入探讨了C++ STL中的向量(vector),包括其基本概念、声明与初始化方式、元素输入与访问方法,以及一系列实用的操作技巧,如大小获取、复制、比较、插入、删除和交换等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、向量的介绍
    向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。
    
    在使用它时, 需要包含头文件 vector, #include<vector>
    
    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的初始值

三、元素的输入及访问

#include<bits/stdc++.h>
using namespace std;
int main()
{

    vector<int> a(10,0);//大小为10初值为0的向量a
    //对其中部分元素进行输入
    for(int i=0; i<10; i++)
    {
        int x;
        cin>>x;
        a.push_back(x);
    }
    vector<int>::iterator it;
    for(it=a.begin(); it!=a.end(); it++)
        cout<<*it<<" ";
    return 0;
}

   在元素的输出上, 还可以使用遍历器(又称迭代器)进行输出控制。在 vector<int> b(a.begin(), a.begin()+3) ; 这种声明形式中, (a.begin()、a.begin()+3) 表示向量起始元素位置到起始元素+3之间的元素位置。(a.begin(), a.end())则表示起始元素和最后一个元素之外的元素位置。
    向量元素的位置便成为遍历器, 同时, 向量元素的位置也是一种数据类型, 在向量中遍历器的类型为: vector<int>::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个元素)
        
        ③、 vector<int> a(5, 1) ;
            vector<int> b(10) ;
            b.insert(b.begin(), a.begin(), a.end()) ;        //将a.begin(), a.end()之间的全部元素插入到b.begin()前


    7>. 删除 - erase
        ①、 b.erase(b.begin()) ;                     //将起始位置的元素删除
        ②、 b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除


    8>. 交换 - swap
        b.swap(a) ;            //a向量与b向量进行交换

c.pop_back()       // 删除最后一个数据。
c.push_back(elem)  // 在尾部加入一个数据

vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);
#include<bits/stdc++.h>
using namespace std;
void print(vector<double>v)
{
    vector<double>::iterator it;
    for(it=v.begin(); it!=v.end(); it++)
        cout<<*it<<" ";
    cout<<endl;
}
int main()
{
    vector<double>v;
    v.push_back(0.1);
    v.push_back(0.2);
    v.push_back(0.3);
    v[2]=0.4;
    print(v);
//0.1 0.2 0.4
    v.insert(v.begin()+2,0.8);
    print(v);
//0.1 0.2 0.8 0.4
    v.erase(v.begin()+1);
    print(v);
//0.1 0.8 0.4
    v.push_back(0.9);
    print(v);
//0.1 0.8 0.4 0.9
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值