STL(八)——向量vector

向量Vector

vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
简单理解为:向量Vector是一个能够存放任意类型的动态数组,可以动态改变大小。

常见形式为:vector<datatype> v
(尖括号中为元素类型名,它可以是任何合法的数据类型)

1.初始化
  1. vector a(10); //定义了10个整型元素的向量,没有给出初值,其值是不确定的。
  2. vector a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
  3. vector a(b); //用b向量来创建a向量,整体复制性赋值
  4. vector a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
  5. int b[7]={1,2,3,4,5,9,8};
    vector a(b,b+7); //从数组中获得初值
2.vector的一些操作:

vector<T>v1;

  • 判空: v1.empty(); //如果为空返回true,不为空返回false。

  • 返回元素个数: v1.size();

  • 插入元素: v1.push_back(t); //在v1的最后一个元素后新增一个类型为t的元素。

  • 向量间赋值: v1=v2; //把v2元素赋值给v1。

  • 判断等值: v1==v2; //判断v1中元素的值是否等于v2,是就返回true。

3.算法

(1)sort(a.begin(),a.end());
//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列

(2)reverse(a.begin(),a.end());
//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1

(3)copy(a.begin(),a.end(),b.begin()+1);
//把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素

(4)find(a.begin(),a.end(),10);
//在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置

4.输入输出

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

#include<bits/stdc++.h>
using namespace std ;
int main() {
  vector<int> a(3, 0) ;      //大小为3初值为0的向量a

  cin >>a[2] ;

  for (int i = 0; i < a.size(); i++)
    cout << a[i] << " " ;
  }

B.也可以用迭代器进行输出

#include<bits/stdc++.h>
using namespace std ;
int main() {
  vector<int> a(3, 0) ;      //大小为3初值为0的向量a

  cin >>a[2] ;
  vector<int>::iterator it;
  for (it = a.begin(); it != a.end(); it++)
    cout << *it;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你脸上有BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值