C++学习笔记基础篇31——C++容器之动态数组vector

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

vector 的头文件和命名空间:

#include <vector> //注意,没有 .h
 using namespace std; //在 std 标准命名空间中

vector 的定义:

vector<int> arr_int; //定义了一个内部元素是int的动态数组;
vector<char> arr_char; //定义了一个内部元素是char的动态数组;
vector<CStudent> arr_student; //定义了一个内部元素是CStudent的动态数组;
vector<char*> arr_pchar; //定义了一个内部元素是char*的动态数组;

vector 的初始化:

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

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

  return 0;
}

vector 的的常用基本操作

① 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);    //同⑨

使用实例

#include <vector> //注意,没有 .h
#include<iostream>
using namespace std; //在 std 标准命名空间中
int main(int argc, char* argv[])
{
	int szint[5] = {1,2,3,4,5};
	//vector是动态数组,是个模板,可以适用于任何类型,
	//初始化
	vector<int> arr_int;
	vector<int> second(4,100);
	vector<int> third(second);
	vector<int> forth=second;
	vector<int> fivth(third.begin(),third.end());
	vector<int> six(szint, szint + sizeof(szint) / sizeof(int));
	int a=fivth.at(2);
	//插入
	six.push_back(100);//在vector的最后插入100
	six.insert(six.begin() + 2, 666);//在six下标为2的地方插入666
	fivth.insert(fivth.begin() + 3, 3, 666);//在fivth下标为3的地方插入3个666
	forth.insert(forth.begin()+2, szint, szint + sizeof(szint) / sizeof(int));//插入数组
	//删除
	forth.pop_back();//删除最后一个元素
	fivth._Pop_back_n(3);//删除最后三个元素
	forth.erase(forth.begin() + 1);//删除某个下标的元素
	forth.erase(forth.begin() + 1, forth.begin() + 2);//删除某个区域的元素【),
	//												//前一个下标会被删除,后一个下标不会

	//遍历
	//下标遍历
	for (int idx = 0; idx < six.size(); idx++)
	{
		int value = six[idx];
		cout << value << ",";
	}
	cout << endl;
	//迭代器遍历,类似于指针
	vector<int>::iterator itor;
	for (itor = six.begin(); itor != six.end();itor++)
	{
		int value = *itor;
		cout << value << ",";
	}
	system("pause");
 	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值