分享刷题的一些小知识点--4.9日

1.string库提供了 >、<、==、>=、<=、!= 等比较运算符,比如两个字符串s和t,直接(s==t)是正确的。

2.unordered_map 容器,直译过来就是"无序 map 容器"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。

头文件:#include<unordered_map >

3.vector::earse

是擦除容器内固定位置的值或者一个区间的值,但是它的返回值是一个迭代器,指向最后一个删除元素的下一个元素;

for(Iter = v1.begin(); Iter != v1.end(); Iter++) 
{ 
  if(*Iter == 10) 
  { 
   Iter = v1.erase(Iter);//Iter为删除元素的下一个元素的迭代器
  //即第一次这段语句后Iter 会是20,大家可以通过debug调试出来查看下数值
  } 

总是容易写成v1.erase(v1[i]);//这样会使迭代器编程野指针,造成系统崩溃

4.两个字符串需要比较时,可以让字符串的值转为数字而成为容器或者数组里中括号里的值,那么它等于哪个数字就代表这个字符有几个,比如下俐中:

 bool canConstruct(string ransomNote, string magazine)
    {
        int m[26]={0};
        for(int i=0;i<magazine.size();i++)
        {
            m[magazine[i]-'a']++;//1,比如这里有字母转化为数字9,而a[9]=2;就代表9有两个
        }
        for(int j=0;j<ransomNote.size();j++)
        {
            m[ransomNote[j]-'a']--;
            if(m[ransomNote[j]-'a']<0)  return false;
        }
        return true;
    }

5.string中find ()返回值是字母在母串中的下标位置

6.函数的返回类型是vector,但是题中需要用到set容器操作,可以定义set存储结果,在最后返回的时候就定义vector<类型>(set.begin(),set.end());如下:

 return vector<int>(res.begin(),res.end());

7.vector插入数据是push_back:在数组的最后添加数据,但是set是insert函数插入数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我在凌晨等太阳¤

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值