向量Vector
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
简单理解为:向量Vector是一个能够存放任意类型的动态数组,可以动态改变大小。
常见形式为:vector<datatype> v
(尖括号中为元素类型名,它可以是任何合法的数据类型)
1.初始化
- vector a(10); //定义了10个整型元素的向量,没有给出初值,其值是不确定的。
- vector a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
- vector a(b); //用b向量来创建a向量,整体复制性赋值
- vector a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
- 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;
}