隔很长时间刷算法,就会把C++的语法丢掉一些。写下这篇文章用于复习。
1、Xcode创建C++项目
创建项目的时候,选择macOS——Command Line Tool——C++。
2、C++基本模板
#include <iostream>
using namespace std;
int main() {
return 0;
}
3、字符串的输入
string str;
// 第一类:不断输入空格隔开的单词,直到回车
while(cin >> str){
cout << str << endl;// str是不同的单词
if(getchar() == '\n')
break;
}
// 第二类:输入包含空格的字符串,一个字符串以回车结束输入
while(getline(cin, str)){
cout << str << endl;// str就是一整串字符串
}
4、向量的使用
// 声明
vector<int> vec;
// 初始化
vector<int> vec(10); // 大小为10
vector<vector<int>> vec(10); // “行数”为10的二维向量
vector<int> vec(10, 1); // 大小为10,且全赋值为1
vector<int> tmp(vec.begin(), vec.end()); // 拿vec的值来初始化
vector<int> tmp(n, n+5); // 拿数组来初始化
vector<int> tmp(&n[1], &n[4]); // 拿数组来初始化
// 插入
vec.push_back(某值);
vec.insert(vec+4, 某值); // 在vec的第5个位置插入某值
// 删除
vec.erase(vec.begin(), vec.end());
// 长度
cout << vec.size();
// 排序
sort(vec.begin(), vec.end());
// 查询
auto it = find(vec.begin(), vec.end(), 查找值);
if(it != vec.end()){
// 找到了
}
// it迭代器转下标
int index = it - vec.end();
5、哈希表的使用
// 相当于是下标可以定义的数组,key-value
unordered_map<int, int> map;
// 初始化
unordered_map<int, int> map={{1,1},{2,2},{3,3}};
// 插入
map[key值] = value值;
// 按照key查询
auto it = map.find(key值);
// 找到了
if(it != map.end()){
cout << it -> first;// 打印key
cout << it -> second;// 打印value
}
6、链表的使用
// 结构体
struct Node{
int val;
Node* next;
Node(): val(0), next(nullptr) {}
Node(int x): val(x), next(nullptr) {}
Node(int x, Node *next): val(x), next(next) {}
}
// 定义
Node *head = nullptr, *tail = nullptr;
// 插入
head->next = new Node(val值);
head = head->next;