目录
1. cctype的一些函数
2. C++ 自定义cmp
3. C++ const定义常量
4. C++ string
5. C++ 引用&相当于改名字
6. C++ 引用struct时可以直接不写
7. C++ STL 之动态数组vector
8. C++ STL 之集合set
9. C++ STL 之映射map
10. C++ STL 之栈stack
11. C++ STL 之队列queue
12. C++ 11函数正确打开方式
13. C++ 11中的stoi stod
参考文献
最近打算对之前的乙级刷题做一个小总结,晚上刚好看到柳婼的一个pdf,结合着总结了一些用C++刷算法题的一些trick,用时1个小时。【侵删】
转换大小写:tolower/toupper
char c = 'A';
char b = tolower(c);
其他的:
isalpha 字母包括大小写
islower 小写字母
isupper 大写字母
isalnum 大小写字母+数字
isblank space+\t
isspace space \t \r \n
一般配合结构体 例如:按成绩大小排序 成绩相同则按照学号大小排序
#include
using namespace std;
struct stu{ //定义结构体
int id;
int score;
}
bool cmp(stu a, stu b) {
return a.score != b.score ? a.score > b.score : return a.id < b.id;
}
const int a = 10001;
string s = "abc"; //直接定义
string s1 = s + s3; //拼接字符串
string s5 = to_string(12345); //将12345转换成字符串
printf("%s\n", (s + s1).c_str()); //用printf得加.c_str()
cin读入字符串以空格为间隔,整行输入需要用getline。
string s;
getline(cin, s);
cout << s.length(); //输出字符串长度
substr子字符串
string s1 = s.substr(3); //从下标3直到末尾
string s2 = s.substr(3, 5); //从3开始数5个字符
int a = 1;
int &b = a; //b即a
vector, stack, queue, map, set在C++中都称作容器,www.cplusplus.com官方文档中搜关键词便会有所有方法。
vector v1; //一开始定义不分配大小
v1.resize(8); //长度改成8
vector v(10); //定义长度为10,初值都为0
vector s(10, 2); //定义长度为10,初值都为2
for(int i = 0; i < 10; i++){
v1.push_back(i); //末尾加i
}
for(auto it = s.begin(); it != s.end(); it++)
{
cout << *it << " "; //迭代器访问
}
set自动从小到大排序
set s; //定义空集合
s.insert(1);//插入1
for(int i = 0; i < 10; i++){
s.insert(i); //添加i
}
for(auto it = s.begin(); it != s.end(); it++)
{
cout << *it << " "; //迭代器遍历
}
s.erase(1); //删除s中1这个元素
map自动排序
map m; //定义一个空map 键string 值int
m["hello"] = 2; //key为hello 值为2存入map
for(auto it = m.begin(); it != m.end(); it++)
{
cout << it->first << " " << it->second << endl; //迭代器遍历
}
cout << m.begin()->first << " " << m.begin()->second << endl; //访问第一个元素key value
cout << m.rbegin()->first << " " << m.rbegin()->second << endl; //访问最后一个元素key value
stack s;
for(int i = 0; i < 10; i++){
s.push(i); //i压入栈中
}
cout << s.top() << endl; //访问栈顶元素
s.pop(); //移除栈顶元素
queue q;
for(int i = 0; i < 10; i++){
q.push(i); //i压入
}
cout << q.front() << " " << q.back() << endl; //访问队顶元素 队尾元素
q.pop(); //删除队首元素
dev c++工具-编译选项-编译器-编译时加入这个命令“-std=c++11”
stoi stod可以将string转换成int/double
string str = "123";
int a = stoi(str);
str = "123.4";
double b = stod(str);
不仅有上述两种,还有
stof (string to float)
stold (string to long double)
stoll (string to long long)...etc.
《从放弃C语言到使用C++刷算法的简明教程v4.7》柳婼