STL的用法

STL的用法,第1张

STL的用法

这次终于轮到我来写自己的STL用法了hhh
废话不多说,

1.vector,可变长数组,倍增的思想

vector v;
	int n=10;
	for(int i=1;i<=n;i++) v.push_back(i);
//1.vector的遍历	
	for(int i=0;i::iterator it; 
	for(it = v.begin(); it!=v.end(); it++) cout<<*it<<' ';

	//使用迭代器遍历,stl的常见用法
	cout< a(3, 4); vector b (4, 3);
	if(a 

2.二元组pair

pair p;
	//初始化
	p=make_pair(10, "bl");
	p={20, "abc"};
	//存储多个东西可以用连续的pair<>
	pair> pp; 
	p.first();//是指的第一个元素;
	p.second();//是指的第二个元素; 
	//pair支持比较运算,以first为第一个关键字,second为第二个关键字
	//按字典序排列或比较 
	//pair比结构体省代码

3.string字符串

string s = "abc";
	s += "def";
	s.length();//作用跟size基本相同
	s.substr(1,4);//从下表为1开始,截取长度为4的子串 
	s.substr(1);//返回从下表为1开始的所有字符串 
	s.size();//返回字符串s的长度 
	s.empty(); //返回字符串是否为空 
	s.clear();//清除字符串的内容 
	//如何用printf输出字符串
	printf("%sn", a.c_str());//a.c_str()返回string的起始地址

4.队列

//队列没有
queue q;
	//q没有clear()的 *** 作 
	q.push();//从队尾压入一个元素 
	q.pop();//d出队头元素 
	q.front()//返回队头元素 
	q.empty();//判断队列是否为空 
	q.back();//返回队尾元素
	//队列,优先队列和栈没有clear函数 如果想清空一个队列,可以直接重新开一个

5.优先队列

//优先队列, 堆,一般定义的堆,默认是大根堆 
	priority_queue q;
	q.push();//插入一个元素 
	q.pop()//d出堆顶元素 
	q.top() //返回堆顶元素
//定义小根堆的方法
	q.push(-x);
 priority_queue, greater>qq; 

6.栈

//栈
	stack st;
	st.pop();//d出栈顶元素 
	st.push();//压入栈中 
	st.empty();//
	st.top();//返回栈顶元素 
	st.size();// 
	

7.双端队列

//deque双端队列,速度有点慢 ,支持随机选取 
	deque dq;
	dq.size();//
	dq.empty(); //
	dq.pop_back();//d出队尾元素 
	dq.pop_front();//d出队头元素 
	dq.push_back();//从队尾插入一个元素 
	dq.push_front();//从队头插入一个元素 
	dq.front();//返回队头元素 
	dq.back();//返回队尾元素 
	dq.begin();//返回队头的迭代器 
	dq.end();// 返回队尾的迭代器 

8.set

//set里面是不能存相同元素的,但是multiset可以
//set的所有 *** 作时间复杂度都是logn
	set/multiset
	size();
	empty();
	clear(); 
	insert();
	find()//如果查找不存在的话,会返回end();这一个迭代器 
 	count();//返回的是某一个数的个数
	erase();//1.如果是一个数,那么就是删除所有的这个数2.如果是一个迭代器,就是删除这个迭代器
	lower_bound();//返回大于等于x的最小的数 
	upper_bound();//返回大于x的最小的数
	begin();end();//支持++和--的 *** 作,返回前驱和后继 

9.map

	map/multimap
	size();
	empty();
	clear(); 
	begin();
	end();
	insert();//插入的数是一个pair 
	erase();//输入的参数是pair或者是迭代器 
	find();
	//可以像用数组一样用map,时间复杂度是logn
	//也支持lower_bound和upper_bound 
	unordered_set, unordered_map, unordered_multiset, unordered_multimap
	//用法和上面类似,不过增删改查的时间复杂度是o(1) ,不支持lower_bound和upper_bound,迭代器--++的 *** 作 

11bitset

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4653935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存