一些以前不了解的知识点(及常用函数)
-
工具-编译选项-“-std=c++11" //c要小写 某天傻了写了C嗐
-
做简单判断的时候可以把if代码块改成三目运算符“ 判断式? 为真时执行 : 为假时执行”。
-
最好不用同时在一个程序里同时使用cout和printf,有时候会出错。
-
substr()用于截取某个字符串中的子串,比如
string s1 = s.substr(4); //从s[4]一直到s结束 string s2 = s.substr(5, 3); //从s[5]开始截取三个字符
-
不从键盘端输入的变量最好初始化一下。
-
map键值对,每个键只出现一次(同一关键字),如map<string, int> m, 此时m.size()是关键字的个数,键用it->first获取、值用it->second获取。
-
sort函数默认升序排序,cmp可以自行定义排序方式与sort一起使用。比如
bool cmp(int a, int b) { return a > b; //从小到大排序,注意cmp函数的返回类型 } sort(v.begin(), v.end(), cmp); //与sort合用给vector v排序,begin()为数组头,end()为尾 sort(a, a + n, cmp); //给数组元素排序,a表示数组a的首地址,a + n为第n个元素
-
如果要定义很大数组的时候最好在main函数外面进行定义(因为作为局部变量储存在堆栈段,太大会导致栈溢出结果…可恶的段错误。(同时函数执行完毕的时候它的局部变量空间会被释放,无法再使用它的值。
-
判断是否素数
//n太大的时候不要用 bool isprime(int n) { if(n <= 1) return flase; for(int i = 2; i * i <= n; i++) if (n % i == 0) return false; return true; } //啥时候都能用 bool isprime(int n) { if (n <= 1) return false; //特判 int sqr = (int)sqrt(1.0 * n); //根号n for (int i = 2; i <= sqr; i++) //遍历2~根号n if (n % i == 0) return false; //n不是素数 return true; //n是素数 }
-
C++万能头文件:#include<bi