C++STL之vector

前几天学习了C++STL的vector类型,口胡一下^_^

一、vector的简介
向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版。
在使用它时, 需要包含头文件#include<vector>
vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素。此外, vector 也提供了许多的方法来对自身进行操作。

二、向量的声明和初始化
vector<int> a 声明一个int型向量a
vector<int> a(10) 声明一个初始大小为10的int型向量a
vector<int> a(10,1) 声明一个初始大小为10且初始值都为1的int型向量a
vector<int> b(a) 声明一个int型向量b,并用向量a初始化向量b
vector<int> b(a.begin(),a.begin()+3) 声明一个int型向量b,并用向量a的第0个到第2个(共3个)元素作为向量b的初始值

除此之外,还可以直接用数组初始化向量

int n[]={1,2,3,4,5}
vector<int> a(n,n+5) 声明一个int型的向量a,并用n数组的第0个到第4个(共5个)元素作为向量a的初始值
vector<int> a(&n[1],&n[4]) 声明一个int型向量a,并用n数组中n[1]至n[4]的元素作为向量a的初始值

三、元素的输入及访问

#include<bits/stdc++.h>
using namespace std;
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
#define fin(x) freopen(""#x".in","r",stdin)
#define fout(x) freopen(""#x".out","w",stdout)
#define open(x) fin(x);fout(x)
#define ll long long
#define inf INT_MAX

//声明一个初始大小为10且初始值都为0的int型向量a
vector<int> a(10,0);
int i;
int main(){
    //对其中的部分元素进行输入
    cin>>a[2]>>a[5]>>a[6];

    //输出全部
    for(i=0;i<=a.size();i++) cout<<a[i];
}

在元素的输出上, 还可以使用遍历器(又称迭代器)进行输出控制。在 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();i++) cout<<*t<<" ";

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

vector<int> a(5,1);
vector<int> b(10);
b.insert(b.begin(),a.begin(),a.end());

//将向量a中a.begin()~a.end()之间的元素全部插入到向量b的初始位置前

7.删除
b.erase(b.begin()) //将向量b的起始位置的元素删除
b.erase(b.begin(),b.begin()+3) //将向量b中从第0个到第2个(共3个)元素删除

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

本篇博客就到这里,当然vector还有二维向量,本人蒟蒻,暂且未学懂,不便之处,尽情谅解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值