STL笔记(queue,stack,string,vector,multiset)

queue

q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素

stack

s.size( ) :返回栈中元素个数
s.top( ) :返回栈顶的元素
s.pop( ) :从栈中取出并删除元素
s.push(e) :向栈中添加元素e
s.empty( ) :栈为空时返回true

string中查找与分割

涉及到string类的两个函数find和substr:
1、find函数
原型:size_t find ( const string& str, size_t pos = 0 ) const;
功能:查找子字符串第一次出现的位置。
参数说明:str为子字符串,pos为初始查找位置。
返回值:找到的话返回第一次出现的位置,否则返回string::npos

 if(b.find(i)!=string::npos)

2、substr函数
原型:string substr ( size_t pos = 0, size_t len = npos ) const;
功能:获得子字符串。
参数说明:pos为起始位置(默认为0),len为字符串长度(默认为npos)
返回值:子字符串
s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回 s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回

s="12300";
n=3;
打印s.substr(n)输出的是00而不是123

vector

push_back( ) 将一个新的元素加到vector的最后面
pop_back( ) 删除Vector容器中的最后一个元素
c.back(),传回最后一个数据,不检查这个数据是否存在。
c.begin(),传回迭代器中的第一个数据地址。
c.capacity(),返回容器当前已分配的容量。
c.clear(),移除容器中所有数据。
c.empty(),判断容器是否为空。
insert()
①、 a.insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
②、 a.insert(a.begin(), 3, 1000) ; //将1000分别插入到向量元素位置的0-2处(共3个元素)
③、 vector a(5, 1) ;
vector b(10) ;
b.insert(b.begin(), a.begin(), a.end()) ; //将a.begin(), a.end()之间的全部元素插入到b.begin()前

获取vecto
r容器最后一个元素
//方法一:
return vec.at(vec.size()-1);

//方法二:
return vec.back();
//
方法三:
return vec.end()-1; //注意:end指向末尾元素的下一个元素。

//方法四:
return vec.rbegin();//反向迭代器

c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

set

set取并集,交集,差集
需要包含头文件:#include < algorithm >
set里面有set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)、set_symmetric_difference(取集合对称差集)等函数。

multiset

c++语言中,multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。
关键坑:如果multiset的erase()参数为值,则会删除所有这个值的所有元素

二维的vector排序

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
 
bool cmp(vector<int> a, vector<int> b)
{
	if(a[0] != b[0]) return a[0] > b[0];
	if(a[1] != b[1]) return a[1] > b[1];
	if(a[2] != b[2]) return a[2] > b[2];
}
 
int main()
{
	vector<vector<int>> vec = { {1,4,3}, {1,4,7} , {1,3,5} , {2,9,4} , {2,5,8} , {3,9,6} };
	
	sort(vec.begin(), vec.end(), cmp);
 
	for(auto p : vec)
		cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<endl;
 
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值