vector

#vector的用法,小白篇
##前言
在下最近在visual stdio code上配置好了c++,面对vs code漂亮的界面,我果断舍弃了惨白惨白的code block,转向微软的怀抱。

开始自学c++的模板,也没什么人可以指教,只是单纯的自己的理解发表出来供诸位同泽参考,如有谬误,见笑了。

##正文

Vector 是C++标准程式库中的一个类,可视为会自动扩展容量的阵列,以循序(Sequential)的方式维护变数集合。vector的特色有支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时。vector是C++标准程式库中的众多容器(container)之一。 vector以模板(泛型)方式实现,可以保存任意类型的变数,包括使用者自定义的资料型态,例如:它可以是放置整数(int)型态的 vector、也可以是放置字串(string)型态的 vector、或者放置使用者自定类别(user-defined class)的 vector。  

以上内容引自wiki,看的认识一头雾水,说的都是一些什么鬼??

试着理解一下,意思大概就是vector容器是一个不定长数组??不定长数组的意思是,这个数组想要多长就要多长吗?本着时间出真知的真理,博主开始了一点也一点的实践。

首先是定义vector数组,如下:

#include<vector>
using namespace std;
int main(){
	vector<int> v;
}

这样我们就有了一个数组v,那么这个数组和我们正常定义的数组有什么区别呢?

int main(){
	int a[100];//正常定义
}

实验如下,
1.给变量赋值
//图片能不能上传什么鬼。

#include<vector>
#include<iostream>
using namespace std;
int main()
{
    vector<int> v;
    v[0]=1;1
    cout<<v[0];
    getchar();
}

结果:失败。

说明:如果想要像vector中压入元素,不能使用和普通数组一样的方法(废话),要用一个叫做push_back的东西,意思很明显,就是想vecror容器的尾部压入一个元素。

#include<vector>
#include<iostream>
using namespace std;
int main()
{
    vector<int> v;
    vector<int>::iterator it;

   int n,a;
   cin>>n;
   for(int i=0;i<n;i++){
       cin>>a;
       v.push_back(a);
   }
   cout<<v[2];
}

2.开始和结束
总得来说,vector的第一个元素你可以用v[0]来表示,但是因为数组不定长,数组的最后一个元素不太好搞,vector用一种特定的方式来表示,即,v.end(),相应的第一元素则可以表示成,v.begin()。

3.获取是数组长度

熟悉的的size

int Size=v.size();

4.判断数组是否为空
精分的empty

int a=v.empty();

如果数组元素不为空则返回0,如果为空则返回1;

5.插入元素
用insert()

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
    int n;
    int s;
    vector<int> vec;

    //迭代器定义
    vector<int>::iterator it;
    while(cin>>n){

    //像数组中压入元素
        for(int i=0;i<n;i++){
            cin>>s;
    //尾部元素扩张
            vec.push_back(s);
        }
    //像容器第二个位置插入4
	vec.insert(vec.begin()+1,4);
}

说明:vec.begin()+1,是指第二个元素,vec.insert(vec.begin()+1,4);的意思是,向vec容器的第二个元素插进一个“4”,原来的元素依次向后退一个,vec.size()+1,这点比普通数组方便多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值