原创 linux下c++ lesson20 容器-vector和deque

本文详细探讨了Linux系统中C++的两种重要容器——vector和deque,通过实例代码vector.cpp和vector插入删除.cpp展示了vector的使用及元素操作,接着在deque.cpp和deque删除.cpp中讲解了deque的特性及其元素管理。

1-vector.cpp

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	vector<int> v1;     //创建数组对象(模板类)   无参构造函数
	vector<int> v2(data, data + 10);     //左闭右开  有参构造函数
	vector<int> v3(10, 1);

	v1.resize(10);        //扩充容量
	for (int i = 0; i < v1.size(); i++)
	{
		v1[i] = i;           //重载了下标运算符
	}

	for (int i = 0; i < v2.size(); i++)
	{
		cout << v2.at(i) << " ";
	}
	cout << endl;

	//正向迭代器
	//for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
	for (vector<int>::iterator it = v3.begin(); it != v3.end(); it = it + 2)
	{
		cout << *it << " ";
	}
	cout << endl;

	//反向迭代器
	for (vector<int>::reverse_iterator rit = v2.rbegin(); rit != v2.rend(); rit++)
	{
		cout << *rit << " ";
	}
	cout << endl;

	//只读迭代器
	for (vector<int>::const_iterator cit = v2.begin(); cit != v2.end(); cit++)
	{
		//(*cit)++;   //只能访问不能修改
		cout << *cit << " ";
	}
	cout << endl;

	return 0;
}

2-vector插入删除.cpp

#include <iostream>
#include <string.h>
#include <vector>

using namespace std;

int main()
{
	const char *str = "this is ";
	const char *s = "helloworld";
	vector<char> v(s, s + strlen(s));

	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	v.insert(v.begin(), 'x');
	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	v.insert(v.end(), 5, 'x');
	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	v.insert(v.begin(), str, str + strlen(str));
	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	v.erase(v.end() - 5, v.end());
	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	v.erase(v.begin() + 8);
	for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it;
	}
	cout << endl;

	return 0;
}

3-deque.cpp

#include <deque>
#include <iostream>

using namespace std;

int main()
{
	int data[5] = {1, 2, 3, 4, 5};
	deque<int> d1;
	deque<int> d2(data, data + 5);
	deque<int> d3(10, 1);

	for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	d2.push_back(6);    //结尾添加元素
	d2.push_front(0);   //开头添加元素
	for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	d2.pop_back();
	d2.pop_front();
	for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	d2.front() = 1000;
	d2.back() = 1000;
	for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	deque<int>::iterator it = d2.erase(d2.begin());   //返回下一个元素的位置
	cout << *it << endl;

	return 0;
}

4-deque删除.cpp

#include <iostream>
#include <deque>

using namespace std;

int main()
{
	int data[10] = {2, 1, 3, 3, 4, 9, 0, 7, 3, 3}; 
	deque<int> d(data, data + 10);

	for (deque<int>::iterator it = d.begin(); it != d.end();)
	{
		if (*it == 3)
		{
			it = d.erase(it);
		}
		else
		{
			it++;
		}
	}

	for (deque<int>::iterator it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " " ;
	}
	cout << endl;
		
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值