1.cin和cout消耗的时间比scanf和printf多得多,建议用后者
2.memset不能对数组进行任意初始化,只能初始化为-1,0
3.初始化一般用fill
- 一维数组:fill (array,array+4,5);
- vector容器:fill (myvector.begin(),myvector.begin()+4,5);
- 一位数组:fill(a,a+maxn,-1)
- 二维数组: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.
- string a;
- a[0]='a';
- a[1]='b';
- a[2]='c';
- cout<<a<<endl; 无法输出,必须用a+='a';
- 或者:a += char(num + '0');
- string a="12345";
- int n=stoi(a);
- 将数字字符串转化为int
10.long double 的输入和输出都是用 %Lf
11.unordered_map内部为hash 查找快
12.vector 易错点:
- (1)如果使用resize 或者()初始化,就不能再使用push_back添加元素,这样会改变size的值,并且元素从size+1开始添加,只能通过v[i]进行赋值
- (2)注意:vector<> v 在没有初始化大小时,不能使用scanf("%d",&v[j]);赋值,只能使用push_back()
13. s.c_str()可以将string数组s转化为char数组输出,用%s