基本运算
- 变量自身参与运算简便写法
1
2
3
4
5
6
7
8
9// 完整写法
int a
a = a + 1; a = a - 5; a = a*2; a = a / 8; a = a % 3;
// 简便写法
a += 1; a -= 5; a *= 1; a /= 8; a %= 3;
// 当运算常数为1时,可写作
a++; a--;
// 两个+在前表示用加之后结果参与其他运算,在字母后面表示现参与其他运算再自加;
// 减号同理 - 字符和数字之间的转换, ‘0’-‘9’ 的字符 -‘0’ 可转换为等值的数字;反之,0-9 数字 +’0’ 即等于对应的字符
1
2
3
4
5
6
7
// 把字符串的每一位数字相加
string str = "1326538"
int ret = 0;
for ( int i = 0; i < str.length(); i++) ret += ( str[i] - '0' ); - 开平方,以及数字的指数运算
1
2
3
4
int m;
// pow(int n, number a)
pow(m, 0.5); - 逻辑取反运算符
!
,逻辑与&&
,逻辑或||
- 变量类型转换
1
2
3
4// to float
int sum = 922;
int count = 76;
(float)sum/count;
字符串
- 字符串截取
1
2
3
// pos is the start index, count is the whole length;
string.substr(pos, count); - 字符串反转
1
2
3
4
5
6
7
8
9
10
11
12
13// 1.使用C的strrev函数
char charArray = "hello world";
strrev(charArray);
// 2.使用<algorithm>中的reverse
string str = "hello world";
reverse(str.begin(), str.end());
// 上面两个函数都会直接修改原字符串内容,
// 若不想改变原字符串,需要拷贝后再反转 - 获取字符串长度4.在字符串固定位位置插入字符 ``
1
2
3
4
string str;
int len1 = str.size();
int len2 = str.leng();1
2
3
4
5
6
7
string ret;
// string.insert(pos, count, char*count);
// pos = the index the char is to be inserted
// count = the number of the char to be inserted
// the inserted char
ret.insert(0, 2, "hi"); - 字符串中单个字符的替换
1
2
3
4
5
6
string psd="llll00000";
replace(psd.begin(), psd.end(), '1', '@');
replace(psd.begin(), psd.end(), '0', '%');
结构体
- 使用结构体数组单元或结构体变量对结构体指针进行赋值时,必须要使用取址符号。(一般数组则可以不用)
1
2
3
4
5
6
7
8
9typedef struct{
string name;
char gender;
string id;
short grade;
} Student;
Student stu[100];
Student *p_stu = &stu[0]; - 结构体变量及结构体指针的元素访问
1
2
3
4
5
6Student stu = {'Mike', 'M', '10023', 35};
Student *p_stu = &stu;
stu.gender; // 结构体变量的元素访问
p_stu->name; // 结构体指针的直接访问
(*p_student).grade; // 结构体指针取内容后再访问
输入输出
cin和cout
- 使用cin和cout需要导入头文件 iostream ;
- 使用 cout 输出“ endl ”表示换行;
- 通过 cin 读入输入内容时自动以 空格 作为变量分割;
- 通过 cout 输出多个变量时,中间不会自动添加任何内容。
1
2
3
cin >> stu.name >> stu.gender >> stu.id >> stu.grade;
cout << stu.name << " " << stu.id << endl; - cout 输出格式控制
1
2
3
4
// 控制输出小数点位数,四舍五入
// 注意,如果小数位数不足或输出为整数,不会补0
cout.precision(3) // keep 2 num after the point
map & hash表
- map 文件中的 map 类,存储键值对,使用树结构存储
1
2
3
4
map<string, int> Map;
Map["wuwu"] = 8; - 用 unordered_map 来表示 hash map,使用哈希存储,查找速度更快。
1
2
3
4
unordered_map<string, int> hashMap;
hashMap["haha"] = 0;
其他
- 必须要声明变量空间,一般小型文件直接
using namespace std;
使用标准命名空间即可。