STL 容器的常用操作


/*
	基础数据结构
	deque  队列 双向表
	list 双向链表
	vector 单向链表
*/
#include <iostream>
#include <deque>
#include <list>
#include <algorithm>
#include <stack>
#include <vector>
#include <queue>
#include <map>
#include<set>
using namespace std;
int main01()
{

	deque<int> a;
	a.push_back(2); //从后进
	a.push_back(3);
	a.push_back(4);
	a.push_front(1);//从前面进
	
	for (size_t i = 0; i < a.size(); i++)
	{
		cout << a[i] << endl;

	}
	a.pop_back();//从后面删除
	a.pop_front();//从前删除
	deque<int>::iterator it;

	for (it = a.begin(); it != a.end(); it++ ) //迭代器遍历
	{ 
		rsize_t nset = distance(a.begin(),it); //算法求点
		cout << *it << endl;
	}
	getchar();
	return 0;
}

/*
	list 双向链表
*/

int main02()
{
	//using namespace std;
	list <int> b;
	b.push_back(1);//往后插入
	b.push_back(2);
	b.push_back(3);
	b.push_front(11);//前插入

	b.insert(b.begin(),2);//中间,收尾参数是迭代器
	b.insert(b.end, 4, 20);//末尾插入4个20
	std::list<int>::iterator iter;
	for (iter = b.begin(); iter != b.end(); iter++)
	{
		cout << *iter << endl;
	}
	list <int> c;

	c.push_back(2);
	c.push_back(3);
	c.push_back(4);
	//将另外一个队列插入
	b.insert(b.begin(),c.begin(),c.end());


}
/*
	statck 
	1.LIFO 先进先出
*/

int main03()
{
	stack<int, deque<int> >a;  
	stack<int, vector<int>> b;
	stack<int, list<int>> c;
	stack<int> d;
	d.empty();   //判断是否为空
	d.size();   //大小
	d.pop();    //弹出
	d.top();
	d.push(1);  //压入
	
	
	return 0;

}
/*
	queue 队列 先进先出
*/
int main03()
{
	queue<int, deque<int>> a;//用deque创建 队列创建
	queue<int, list<int> > b; //

}
 

/*
map (映射)  multimap (多隐射)
红黑树
inset :4种方法
cout find 
erase:3种方法


*/

int main04()
{
	map<int, string> a;  //不可重复
	multimap<int, string> ma; //可重复
	a.insert(map<int, string>::value_type(1, "one"));//插入
	a.insert(pair<int, string>(1222, "One"));
	a[1000] = "123";//最简单

	ma.insert(multimap<int, string>::value_type(3, "2123"));
	ma.insert(multimap<int, string>::value_type(4, "222123"));
	ma.insert(multimap<int, string>::value_type(5, "12123"));

	//查找,有可能重复
	multimap<int, string>::const_iterator it;

	it = ma.find(3);
	if (it != ma.end())
	{

		rsize_t n = ma.count(100);
		for (size_t i = 0; i < n; i++)
		{
			std::cout << (*it).second << endl; 
			it++;//重复打印
		}
	}

	//查找
	if (ma.erase(-1) > 0)
	{
		cout << "删除成功!" << endl;

	}



}

/*
	set集合
	红黑树(数据结构)
	基本数据类型
	不可重复集合
*/
int main()
{
	std::set<int> a;//不可重复,且自动排序(内部红黑树决定)
	std::multiset<int> ma;//可重复
	a.insert(123);  //插入
	a.insert(122);
	a.insert(125);
	set<int>::const_iterator it = a.begin();

	while (it !=a.end())
	{
		cout << *it << endl;
	}
	
	ma.insert(3000);
	ma.insert(a.begin(), a.end()); //将a中的数字插入
	ma.insert(3000);


}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值