输入输出:
cin >> n;
// 等同于 scanf("%d", &n);
cout << n;
// 等同于 printf("%d", n);
cout << "hello world" << endl;
// 等同于 printf("hello world\n");
string类:
string s = "hello world"; // 赋值字符串
string s2 = s;
string s3 = s + s2; // 字符串拼接
cout << s; // 输出字符串
string s4;
cin >> s4; // 读⼊字符串,不包括空格
string s5;
getline(cin, s5); // 读入⼀⾏字符串,包括空格
cout << s.length(); // 输出字符串的⻓度
string s6 = s.substr(4); // 截取从下标4开始⼀直到结束
string s7 = s.substr(5, 3); // 截取从下标5开始,3个字符
string s8 = to_string(123); // 将123这个数字转成字符串
string s9 = to_string(4.5); // 将4.5这个数字转成字符串
int a = stoi(s8); // 将"123"这个字符串转成数字
double b = stod(s9); // 将"4.5"这个字符串转成数字
传值和引用:
void fun1(int a) { // 传值,不改变原变量
a = 99;
}
void fun2(int &a) { // 引用,改变原变量
a = 99;
}
for循环:
int arr[4] = {0, 1, 2, 3};
for(int i : arr) {
cout << i << endl; // 输出数组中的每⼀个元素的值
}
for(int &i : arr) { // i为引⽤变量
i = i * 2; // 将数组中的每⼀个元素都乘以2
}
动态数组vector:
# include <iostream>
# include <vector>
using namespace std;
int main() {
vector<int> v; // 定义一个空vector(动态数组)
v.resize(8); // 设置大小为8,默认元素值都为0
for(int i = 0; i < 10; i++) {
v.push_back(i); // 在vector的末尾添加元素i
}
// 输出vector的元素个数
cout << v.size() << endl;
vector<int> v1(10); // 指定vector的⼤⼩为10,默认元素值都为0
vector<int> v2(100, 9); // 指定vector的⼤⼩为100,默认元素值都为9
// 使⽤迭代器的⽅式访问vector
// v.begin() 指向容器的第⼀个元素
// v.end() 指向容器的最后⼀个元素的后⼀个位置
for(auto it = v.begin(); it != v.end(); it++) {
cout << *it << " "; // 访问元素的值要对it指针取值
}
return 0;
}
集合set:
# include <iostream>
# include <set> // set会按照元素从⼩到⼤排序,unordered_set不排序
using namespace std;
int main() {
set<int> s; // 定义一个空set(集合)
for(int i = 0; i < 6; i++) {
s.insert(i); // 向集合s⾥⾯插⼊元素i
}
s.erase(1); // 删除集合s中的1这个元素
// 查找集合s中10这个元素,等于s.end()表示未找到,未找到输出0,找到输出1
cout << (s.find(1) != s.end()) << endl;
// 使⽤迭代器的⽅式访问set
for(auto it = s.begin(); it != s.end(); it++) {
cout << *it << " ";
}
return 0;
}
字典map:
# include <iostream>
# include <string>
# include <map> // map会按照键从⼩到⼤排序,unordered_map不排序
using namespace std;
int main() {
map<string, int> m; // 定义一个空map(字典),键是string,值是int
m["age"] = 20; // 添加key为"age", value为20的键值对
// 访问key为"age"的value, key不存在则返回0
cout << m["age"] << endl;
// 访问map的第⼀个元素,输出它的键和值
cout << m.begin()->first << " " << m.begin()->second << endl;
// 访问map的最后⼀个元素,输出它的键和值
cout << m.rbegin()->first << " " << m.rbegin()->second << endl;
// 使⽤迭代器的⽅式访问map
// 键⽤it->first获取
// 值⽤it->second获取
for(auto it = m.begin(); it != m.end(); it++) {
cout << it->first << " " << it->second << endl;
}
return 0;
}
栈stack:
# include <iostream>
# include <stack>
using namespace std;
int main() {
stack<int> s; // 定义一个空stack(栈)
for(int i = 0; i < 6; i++) {
s.push(i); // 将元素i压⼊栈s中
}
s.pop(); // 移除栈顶元素
cout << s.top(); // 访问栈顶元素
return 0;
}
队列queue:
# include <iostream>
# include <queue>
using namespace std;
int main() {
queue<int> q; // 定义⼀个空queue(队列)
for(int i = 0; i < 6; i++) {
q.push(i); // 将i的值依次压⼊队列q中
}
q.pop(); // 移除队列的队⾸元素
cout << q.front(); // 访问队列的队⾸元素
cout << q.back(); // 访问队列的队尾元素
return 0;
}
排序:
# include <iostream>
# include <algorithm>
using namespace std;
bool cmp(int a, int b) { // cmp函数返回的值是bool类型
return a > b; // 从⼤到⼩排列
// return a < b; // 默认从小到大排序
}
int main() {
int a[10] = {9, 6, 3, 8, 5, 2, 7, 4, 1, 0};
sort(a, a+10, cmp); // sort(起始地址, 结束地址的下一位, 排序的方法)
for(int i = 0; i < 10; i++){
cout << a[i] << endl;
}
return 0;
}