1.字符串这一部分,一定要对vector,map熟悉熟悉熟悉熟悉!!!
2.如何把“123456”转化成数字值123456?
3.如何把数字值123456转化成字符串“123456”?
头文件:sstream
stringstream ss;
ss<<num;
string s;
ss>>s;
3.如下代码段中为什么输出来没有任何内容?
string s1="abcd",s2;
for(int i=0;i<s1.size();i++){
s2[i]=s1[i];
}
cout<<s2<<"\n";
//这个问题真是玄之又玄,时而可以输出内容,时而又不行,如果出现输不出内容,那尝试把赋值语句改成s2.push_back(s1[i]);
4.玄学:
string s;
num=s.size()-a-b-c;//报错,编译不通过
int len=s.size();
num=len-a-b-c;//编译通过 orz
5.vector map string等,调用clear函数并没有真正释放内存,根据容量函数查看得知,所占容量并没有减少。因此,在循环中如果误以为它会释放内存而去反复resize()开辟内存,会导致内存泄漏。
6,这个广度优先搜索题,卡了我两小时,,,,算法思路简单!但是这个细节错误我大二的时候做同样类型的题目就犯过,而且当时也是卡了我两小时以上。惭愧…很弱智的一个错误。如下图,是逆向求出最短路径,但是宁这个“x=p[xx][yy].first;y=p[xx][yy].second;”可直接给我秀到了,这样低级错误再也!!不要!!!犯了!!!!!!!
7.分割字符串strtok_r()函数,巧妙使用可以带来很多便利。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[]="ab,cd,ef";
char *ptr;
char *p;
printf("before strtok: str=%s\n",str);
printf("begin:\n");
ptr = strtok_r(str, ",", &p);
while(ptr != NULL){
printf("str=%s\n",str);
printf("ptr=%s\n",ptr);
ptr = strtok_r(NULL, ",", &p);
}
return 0;
}
8.scanf如何读入一整行,也就是说不会遇到空格就就结束。
char s[20];
scanf("%[^\n]",s);//表示只要没到‘\n’这个字符,那么就会一直读入