STL易错点总结(一)

1.cin和cout消耗的时间比scanf和printf多得多,建议用后者

2.memset不能对数组进行任意初始化,只能初始化为-10

3.初始化一般用fill 

  1. 一维数组:fill (array,array+4,5);
  2. vector容器:fill (myvector.begin(),myvector.begin()+4,5);
  3. 一位数组:fill(a,a+maxn,-1)
  4. 二维数组:fill(Graph[0],Graph[0]+maxn*maxn,INF)

4.vector使用clear清空后,内存仍存在,需要覆盖,建议每次使用重新定义

5.queue和stack入队前不要忘记彻底pop清空,建议每次使用都重新定义

6.vector<> v 在没有初始化大小时,不能使用scanf("%d",&v[i]) 赋值,只能使用push_back()

7.string数组,可以直接用=赋值

8.reverse(m.begin(),m.end());  将string 倒置

9.

  1. string a;
  2. a[0]='a';
  3. a[1]='b';
  4. a[2]='c';
  5. cout<<a<<endl;  无法输出,必须用a+='a';
  6. 或者:a += char(num + '0');
  1. string a="12345";
  2. int n=stoi(a);
  3. 将数字字符串转化为int

10.long double  的输入和输出都是用  %Lf

11.unordered_map内部为hash 查找快

12.vector  易错点:

  1. (1)如果使用resize  或者()初始化,就不能再使用push_back添加元素,这样会改变size的值,并且元素从size+1开始添加,只能通过v[i]进行赋值
  2. (2)注意:vector<> v 在没有初始化大小时,不能使用scanf("%d",&v[j]);赋值,只能使用push_back()

13.  s.c_str()可以将string数组s转化为char数组输出,用%s

14.输入带空格的字符串:getline(cin,str);

原文地址:https://www.cnblogs.com/dreamzj/p/14427136.html