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

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

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

头文件:#include

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

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

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

 return vector(res.begin(),res.end());

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

你可能感兴趣的:(c++,算法)