用C++刷算法题需要掌握的基本语法(更新ing)

隔很长时间刷算法,就会把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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值