C++ 常见问题
greater<typename>()
从大到小。less<typename>()
相反。
random_shuffle(a.begin(),a.end())
随机打乱 a
中元素,最好加入随机数种子。
GetTickClock()
系统启动以来经过的毫秒数,可以做随机数种子,但需要头文件 windows.h
。
next_permutation(a.begin(),a.end())
得到 a
的下一个排列,默认从小到大。如果有下一个排列返回 true
否则啥都不干返回 false
。
cout<<fixed<<setprecision(x)
保留 x
位有效数字。
cout<<setfill(ch)<<setw(len)<<a<<b
场宽为 len
,空出来的部分用字符 ch
填充。setw
的作用效果只有一次。
toupper(ch)
如果是小写字母则转换为大写字母,否则不变。toupper(ch)
相反。
islower(ch)
判断是否是小写字母。isupper(ch)
相反。
nth_element(a.begin(),a.begin()+k,a.end())
将 a
中前 k
小的元素放在前 k
个位置,剩下元素放在后面剩下位置,顺序没有限制。
INT_MAX
LONG_LONG_MAX
ULLONG_MAX
INT_MIN
LONG_LONG_MIN
字面意思。
reverse(a.begin(),a.end())
翻转 a
。
cin
在明确要求转换下,读入成功返回 true
否则 false
。
scanf
返回读入成功的数量,如果读入前读入文件已结束则返回 EOF
,也就是 -1
。
getchar()
读入失败返回 EOF
。
str.c_str()
将字符串以 char*
类型传回。
str.data()
将字符串以 char[]
类型传回。
str.size()
返回字符串长度。
str.empty()
判断字符串是否为空。
str.find(str2)
查找 str2
在字符串中第一次出现的位置,如果没有出现则返回 \(2^{64}-1\)。其中 str2
可为 char
string
char*
char[]
。
str1.insert(pos,str2)
在 str1
的位置 pos
前插入字符串 str2
。
str.erase(pos,len)
从位置 pos
开始删除 len
个字符。
str.erase(it1,it2)
删除指针 it1
到指针 it2
前面的所有字符,如果不存在 it2
就仅删除 it1
指向的字符。
str.clear()
删除字符串中的所有字符,使其变为空串。
str1.replace(pos,len,str2)
将 str1
中从位置 pos
开始长度为 len
的字符替换成 str2
。其中 str2
可为 char
string
char*
char[]
。
pri.push(a)
向堆中加入元素 a
。
pri.pop()
弹出堆顶元素。
pri.empty()
判断堆是否为空。
pri.size()
返回堆中元素个数。
priority_queue<typename>
默认大根堆。
priority_queue<typename,vector<typename>,greater<typename> >
小根堆。