1.初识vector数组:
数组分为静态数组(传统数组)与动态数组(vector数组)。相比传统数组,vector数组的操作更加方便。
对比(一一对应)
静态数组 : 1.在定义时已经固定了数组长度不会再变化(定长容器)
2.通过常用函数对元素进行操作 (具有一定局限性)
3.删除元素需要将所有元素进行移动,维护连续性
4.不能用某个数组将其直接初始化
动态数组:
1.可以随时操作进行变换长度(变长容器)
2.通过特有函数对元素进行操作
3.直接删除
4.能用某个数组将其直接初始化
2.vector数组的定义:
a. vector<存储数据类型名>数组名; //不需要标明数组长度(随时可以插入)
//可以理解为是一个空竹签,竹签上随时可以插上某种口味的糖葫芦(某种数据类型),vector是竹签的属性(即关键字)。b. vector<存储数据类型名>数组名(元素个数) //竹签上随时可以插上某种口味的糖葫芦(某种数据类型),现在已经先串上“元素个数”个糖葫芦,但不影响之后再往上串
c. vector<存储数据类型名> 数组名(数组名); //注意括号内的参数是数组名
//用括号中的数组的值初始化新定义的数组(一一对应)d. vector<存储数据类型名> 数组名(元素个数,数值或字符); //在b的基础上为每个元素赋初值(初值为括号中的第二个参数)
3.vector常用操作函数(vec均指代数组名):
a. vec.pop_back() ; //删除数组的最后一个元素(把最后一个糖葫芦扔掉)
b. vec.erase(vec.begin()+i); // 删除第i+1个元素(不可以直接码vec[10]或10,必须通过这种方式访问)
c. vec.clear(); //清空该数组,变成一个“空竹签”
d. vec.erase(vec.begin()+i,vec.end()+j);// 将i到j间的元素全部删除(把这几个糖葫芦从串上砍掉)
e. vec.push_back(); //在末尾插入一个元素(在括号中写变量名||符合类型的值)
f. vec.insert(vec.begin()+i,a); //在第i个元素后插入a(||符合类型的值)
g. vec .begin() ; //访问第一个元素(a[0])
h. vec.end(); //访问末尾元素
i. vec.empty(); //判断该数组是否为空,空返回1,不空返回0(看看是否还有糖葫芦)
j. vec.size() ; //返回数组长度(看看有几个糖葫芦)
l. 随学习持续完善中......4.代码示例:
#include<iostream>
#include<vector>
using namespace std;
char q[100];
int e=100;
vector <int> a;//空“竹签”
vector <double> b(10);//串10个糖葫芦
vector <char> c;//(100,q);//用q数组给c赋值
vector <int> d(100,1);//先串100个,赋值为1
int main()
{
a.push_back(e); //在末尾插入一个元素(在括号中写变量名||符合类型的值)
a.pop_back();//删除数组的最后一个元素
b.clear();//清空b
cout<<b.empty();//查看吧是否为空
//cout<<c.begin();这三种均不符合语法(仅限访问,不能输出)
//cout<<c.end();
//cout<<d.begin()+1;
cout<<c[0];//仅限输出,不可用于访问
cout<<c.size()<<" ";//返回数组长度(看看有几个糖葫芦)
d.insert(d.begin()+1,10);//在第一个元素后加入元素10
cout<<d[1]<<" ";
d.erase(d.begin()+1,d.end()+2);//删除1.2之间的元素
d.erase(a.begin()+2);//删除第3个元素
cout<<d[0];
return 0;
}
京公网安备 11010502036488号