C++容器之动态数组vector

vector:是动态数组**

定义vector对象的时候先不用指定数组的大小,有数据的化就往数组里面插入就可以了。vector内部自己管理存储空间。

vector的头文件和命名空间**

#include //注意没有.h
using namespace std;


*

vector的定义

vector是一个类模板,可以定义任何类型
例:
vector arr_int; //定义了一个内部元素是int的动态数组
vector arr_char; //定义了一个内部元素是char的动态数组
vector arr_studet; //定义了一个内部元素是CString的动态数组
vector<char > arr_pchar; //定义了一个内部元素是char的动态数组

vector的初始化

#include<vector>
using namespace std;


int main(int argc, char* argv[])
{
	vector<int> one;  //定义一个空的元素类型是int 的vector动态数组
	vector<int>two(4, 100);  //定义一个包含四个元素,每个元素的额值都是100的vector动态数组
	vector<int>three(two.begin(), two.end());//使用two这个对象的迭代器,从开始到结束的所有元素来初始化当前对象
	vector<int>four(three);   //使用three这个对象来初始化当前对象

	int myints[ ] = { 16,2,77,39 };
	vector<int>five (myints,myints * sizeof(myints) / sizeof(int));//使用一个普通的int数组来初始化当前对象

	return 0;
}

vector的常用基本操作

vector<int>arr_int;
①arr_int[idx] 或 arr_int.at(idx)  //返回动态数组中下标为idx的arr_int[idx]元素的值
②arr_int.size() ;   //返回arr_int数组元素的总个数
③arr_int.front();  //返回arr_int 数组的第一个元素的值
④arr_int.back();  //返回arr_int数组的最后一个元素的值
⑤arr_int.clear();  //清空arr_int数组
⑥arr_int.begin();  //返回arr_int数组的第一个下标
⑦arr_int.end();   //返回arr_int数组最后一个数的下标
⑧arr_int.empty();  //判断arr_int数组是否为空,如果为空返回true,非空返回false
⑨arr_int.swap(v1);   //v1是另一个动态数组,将arr_int和v1两个动态数组的元素互换
⑩swap(arr_int,v1);  //同⑨

vector的动态插入

vector支持动态插入也有多种方式:
①调用push_back在尾部插入一个元素,只能是一个一个的插入:arr_int.push_back(3);
②调用insert在下标为1的前面插入一个元素,arr_int.insert(arr_int.begin()+1,888);
③调用insert在下标为2的前面插入3个888元素,arr_int.insert(arr_int.begin()+2,3,888);

vector<int>arr_int,arr_2;
arr_int.push_back(0);
arr_int.push_back(1);
arr_int.push_back(3);

arr_2.push_back(2);
arr_2.push_back(5);
arr_2.push_back(6);
arr_int.insert(arr_int.begin()+2,arr_2.begin(),arr_2.end());

int sz_int[] = {4,7,9};
arr_int.insert(arr_int.begin()+4,sz_int,sz_int+3);

vector的动态删除

①arr_int.pop_back(); //删除arr_int动态数组的最后一个元素
②arr_int.erase(v.begin()+1,v.end()-r); //删除arr_int动态数组中下标(1,v.end()-r)的元素
③arr_int.erase(v.begin()+k); //删除arr_int动态数组的下标为k的元素,返回下一位置的迭代器

vector的遍历

①因为vector也是数组,所以使用索引下标遍历。

for(int fa=0;fa<arr_int.size();++fa)
{
	int value=arr_int[fa];
	cout<<fa<<" ," <<value<<endl;
}

②使用迭代器

for(vector<int>::iterator itor = arr_int.begin(), itor != arr_int.end();++itor)
{
	int value = *itor;
	cout<<" value= "<<value<<endl;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值