2018-11-12到2018-11-17 stl学到的知识点记录

struct Point{

int x,y;

Point(int x=0,int y=0):x(x),y(y) {}  //Point a(1,2)

Point() {} 

}

struct cmp //定义一个结构体,重构()运算符

{

 bool operator ()(const int a,const int b) const

  {return a%10>b%10; }  //注意这里的符号应该是相反的

};

ostream & operator <<(ostream &out,const Point & p)

{

out<<"("<<....;

return out;

}

Vector

把vector作为返回值时,应尽量改成用引用方式传递参数,以避免不必要的值被复制vector<int>& p

UVA 101  

vector v; v.push_back();  v.pop_back()

如果要删掉数组的最后几个,可以用v.resize(h),保存v[0]~v[h-1]

启示:模拟题多指令要提取指令之间的共同性以减少代码量

忘记忽略非法操作

Set

UVA 10815

将非字母统一处理成空格,然后用stringstream切割 string ans;   

string 居然可以这样 !sort(ans.begin(),ans.end());  

UVA12096

set_union(x.begin(),x.end(),y.begin(),y.end(),inserter(z,z.begin());将集合X和Y的并集放入Z的开头

set_intersection(x.begin(),x.end(),y.begin(),y.end(),inserter(z,z.begin());将集合X和Y的交集放入Z的开头

对集合求交际并集、放入等再入栈

将集合和数字之间通过vector和下标建立对应关系 即从编号到set

同时用map将集合映射到编号,即从set到编号   完成了双射

set是集合的集合,每个集合用int表示,set<int>  编号就是集合本身,集合就是编号,需要用什么形式就改变到什么形式

map<set<int>,int> IDcache;

vector<set<int> > v;

int ID(Set<int> x)

{ if(IDcache[x].count()) return IDcache[x];

v.push_back(x);

return IDcache[x]=v.size()-1;

}

map

UVA 156 单词不能通过重排得到另一个单词  

将单词标准化,每一位都转化成小写,然后按照字典序排序 

每个单词都对应一个标准化的string,每个string对应着文本中出现的个数

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值