一、C++与C
1.cin比scanf慢很多,哪怕是关闭了同步也是。1e5以上的数据用cin就可能会TLE。
2.关于输出小数,printf比较方便,cout需要用头文件,cout.setprecistion(int digit)修改精度。
3.bool 类型 非0为true 0为false
4.开辟内存 new int; 返回的是指针
5.struct 可以加入构造函数
STL
- C中原有的
strlen() 字符串长度
strcmp() 字符串比较
strcpy() 字符串拷贝
memset() 暴力清空
memspy() 暴力拷贝
<cstdlib>
qsort() c语言快排(一般不使用)
rand() 随机数
malloc() free() c语言动态分配内存
<ctime>
time(0) 从1970年到现在的秒数(配合随机数) srand(time(0))//真正的随机数
clock() 程序启动到目前位置的毫秒数
<cctype>
isdigit()、isalpha() 判断字符类型,是否为数字、是否为字母
- < vector >
用指针来遍历 vector::iteartor p1;
STL中的指针被称为迭代器
p1++;
erase(p1);删除p1所在数字。 - < string >
string str
str.length(),str.size();
str.insert(1,”aaa”);在下标为1处插入一个字符串
str.
3.
sort(arr,arr + n);//复杂度O(nlogn)
-
min(1,2);max(1,2);//最大最小O(n)
min_element(arr.begin(),arr.end());//返回数组最大最小的指针O(n)
max_element(arr.begin(),arr.end());
mth_element(arr.begin(),arr.end());//把数组中第n小的放在第n个位置(从0开始算),并保证左边的数比它小,右边的数比它大。(类似快排)但复杂度是O(n) -
swap(arr[0],arr[1]);//交换任意俩个同类型的变量 O(n);
reverse(arr.begin(),arr.end());//反转数组 O(n)
unique(arr.begin(),arr.end());//需要在sort后用,去重复的数,返回去重后的结束指针 O(n) -
bool isExist = binary_search(arr.begin(),arr.end(), 1);// 查找对应元素是否存在 O(logn)
-
lower_bound(arr.begin(),arr.end(),2);// 如果把一个数插入到有序数组,它应该插入到哪个位置,返回插入到第一个位置的指针
upper_bound(arr.begin(),arr.end(),2);//返回可以插入到的最后一个位置的指针 -
1s执行1e8次