【蓝桥杯备战】位运算(快速幂)与STL(set、vector、全排列)

为备战蓝桥杯,我每天把刷题经验总结成博客,鞭策自己学习,争取暑假输出三十篇以上。

在这里插入图片描述

位运算与快速幂

位运算有左移、右移、同或、异或、与、或、取反,这里先写个应用,就是快速幂,后面有空再补充例题。
下面图片如果看不清可以右击新标签页打开。
在这里插入图片描述

STL(set、vector、全排列)

在这里插入图片描述
STL有好多,把今天用到的写一下。
今天主要用到了set 、vector还有next_permutation(字符数组或string)

//声明
set<string> a;
//插入
a.insert(var);
//遍历
for(set<string>::iterator it;it!=a.end();it++){cout<<*it;}
//查找是否有元素str,是则输出。
if(a.find(str)!=a.end())cout<<str;

set去重我之前知道,还有一个关键特性在今天做题中遇到的就是,把string放进去后会自动按照字典序排好,当做输入文章、按字典序输出不同单词时尤其好用。

//声明10086个值为6个数

vector<int> a(10086,6);
a.push_back(var);//插入var
a.earse(i);//删除下标为i的元素
char a[10];
next_permutation(a,a+n);

按照全排列的字典序,获取a的下一个排列,第一次获取到的是其本身。今天我用于判断集合中是否有某个单词在经过重新排列后再次出现。
如果是string,这样写:

next_permutation(a.begin(),a.end());

如果直接写a,a+n,字符数组可以,string则会报错,估计原因是,对于string,重载参数是其迭代器。

实用的函数

此外,还遇到了一些其他实用的函数:

swap(a,b);
//交换a和b
isalpha(a[i]);
//判断a[i]是否为字母
a[i]=tolower(a[i]);
//将其转化为小写字母 类似的还有toupper转化为大写字母
string temp;
while(cin>>temp){
stringstream ss(temp);
//ss的精髓是将string获取到,再流出来时就去了空格
stirng a;
while(ss>>a)cout<<a;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民真快落

我琢磨着也没人给我打赏呀。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值