C++ 有关STL中容器vector的操作 初始化 遍历 删除

#include<iostream>

using namespace std;

#include"vector"  //vector的头文件

//vector的插入 获取头部尾部元素  删除尾部元素 等操作

void main31()
{
	//定义一个int类型的vector容器
	vector<int> a;

	//插入数据
	a.push_back(1);
	a.push_back(2);
	a.push_back(3);

	//获取a的长度
	cout << "a的长度:" << a.size() << endl;

	//获取头部元素
	cout << "a的头部元素:" << a.front() << endl;



	//获取a的长度
	cout << "a的长度:" << a.size() << endl;

	 //修改vector的头部元素以及尾部元素的值
	//函数返回值当左值必须返回一个引用

	a.front() = 10;
	a.back() = 23;

	//不断地获取尾部元素,并且将尾部元素删除
	while (a.size()>0)
	{

		cout << "a的尾部元素:" << a.back() << endl;
		a.pop_back();   //默认删除最后一个元素
	}

}

//vector的初始化

void main32()
{
	//利用默认的构造函数的初始化
	vector<int> a;

	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //迭代器方式的输出
	{
		cout << *it << " ";
	}

	//利用vector中的拷贝构造函数

	vector<int> b = a;

	
	vector<int> c(a.begin(), a.begin() + 2);

}

//vector 的遍历

void main33()
{
	//按照数组的形式进行遍历
	vector<int> a(10);   //使用数组形式插入以及遍历的时候一定要注意,如果选定十个元素,则必须要先设定十个元素的内存空间,否则就会出现中断

	for (int i = 0; i < 10; i++)
	{
		a[i] = i;  //vector作为左值
	}

	for (int i = 0; i < 10; i++)
	{
		cout << a[i] << " "; //vector作为右值
	}
}

//关于数组形式赋值和push_back()方式的一些总结
void main34()
{
	vector<int> a(10);
	cout << "a的长度:"<<a.size() << endl;

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //迭代器方式的输出
	{
		cout << *it << " ";
	}

	cout << endl;
	a.push_back(10);
	a.push_back(20);

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //迭代器方式的输出
	{
		cout << *it << " ";
	}
	cout << endl;
	cout << "a的长度:" << a.size() << endl;

	/*总结*/
	//通过对比发现 按照数据的形式会预先分配一段内存,然后默认初始化全部为0 然后就是赋值替换
	//而push_back 会自动的增加一段内存,然后在赋值,从长度的变化就可以发现


}


//vector 迭代器的遍历

/*迭代器的总结*/

//1 iterator====>正向迭代器 正向遍历中 begin() 指向容器的首个元素, end() 指向容器最后一个元素的后面一个内存  当  it = a.end() 的时候就已经代表遍历完毕
//2 reverse_iterator====> 逆向迭代器 逆向遍历中 rbegin() 指向容器的最后一个元素, rend() 指向容器第一个元素的前面一个内存  当  it = a.rend() 的时候就已经代表遍历完毕


void main35()
{
	vector<int> a;

	a.push_back(1);
	a.push_back(2);
	a.push_back(3);
	a.push_back(4);

	cout << "a的长度:" << a.size() << endl;

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}

	cout << endl;
	for (vector<int>::reverse_iterator it = a.rbegin(); it != a.rend(); it++)   //逆向迭代器方式的输出
	{
		cout << *it << " ";
	}


}


//vector 的删除操作

void main36()
{
	vector<int> a(10);   //使用数组形式插入以及遍历的时候一定要注意,如果选定十个元素,则必须要先设定十个元素的内存空间,否则就会出现中断

	for (int i = 0; i < 10; i++)
	{
		a[i] = i;  //vector作为左值
	}

	cout << "初始化的vector" << endl;

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}

	cout << endl;
	//vector的区间删除

	a.erase(a.begin(), a.begin() + 3);   //这是指定删除第0-3之间的元素
	cout << "区间删除的vector" << endl;

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}
	
	cout << endl;


	//vector 指定位置删除

	a.erase(a.begin());  //删除第一个元素

	cout << "指定位置删除的vector" << endl;

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}

	cout << endl;

	//vector 指定元素删除  案例 ,将5全部删除

	a[0] = 5;
	a[1] = 5;
	cout << "初始化的vector" << endl;
	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}
	cout << endl;

	cout << "指定元素删除vector" << endl;
	for (vector<int>::iterator it = a.begin(); it != a.end();)
	{
		if (*it == 5)
		{
			it = a.erase(it);   //这里for循环最后不加上it++ 是因为在删除这一位置之后,it会自动++,然后将这个值赋给新的it
		}
		else
		{
			it++;
		}
	}

	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)   //正向迭代器方式的输出
	{
		cout << *it << " ";
	}

	cout << endl;


}


int main()
{
//	main31();//vector的插入 获取头部尾部元素  删除尾部元素 等操作
	//main32(); //vector的初始化 
	//main33();  //vector 的遍历
	//main34(); //关于数组形式赋值和push_back()方式的一些总结
	//main35();   //vector 迭代器的遍历
	main36(); //vector 的删除操作
	system("pause");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值