训练台

C++

高性能 系统 算法 和竞赛

先定义

C++ 是什么

C++ 是一门用来写精确指令的编程语言,主要用于高性能 系统 算法 和竞赛。你先不用记一堆术语,只要先理解:程序把输入按步骤变成输出。

最小运行信息文件 main.cpp运行 g++ main.cpp -std=c++17 && ./a.out习惯 编译前先手动跟踪内存、下标和容器状态
程序

一组按顺序执行的指令。先读输入,再计算,最后得到输出。

值和变量

值是数据,变量是给数据取的名字。先看名字,再看它保存了什么。

函数

把一件小事封装起来,给输入,拿输出,之后可以反复用。

运行环境

C++17 compiler 负责真正执行 main.cpp 里的代码。

第一段可读代码

Input output

cin cout headers namespace
#include <iostream>
using namespace std;
int main() {
  cout << 42;
}
输出 42

语言族谱

C++ 的族谱

先看清 C++ 从哪里来 和哪些语言接近 再决定下一步怎么学

来源
CSimulaAlgol
当前C++系统编程语言家族
所属家族系统编程语言家族
适合场景

适合 高性能 系统 算法 和竞赛

零基础路径

1看一条规则2先猜输出3凭记忆敲4跑检查器5改一处重做

编程题库

先搜题 再练习

题库按阶段开放,用户可以搜语言、概念、题型、代码关键词,然后直接跳到对应练习。

18 道匹配题
1选择第一阶段 定义入门

C++ 第 1 题

C++ 第 1 题 选择和 output stream 最匹配的说法

2选择第一阶段 定义入门

C++ 第 2 题

C++ 第 2 题 选择和 integer type 最匹配的说法

3选择第一阶段 定义入门

C++ 第 3 题

C++ 第 3 题 选择和 vector push 最匹配的说法

4选择第一阶段 定义入门

C++ 第 4 题

C++ 第 4 题 选择和 reference 最匹配的说法

5选择第一阶段 定义入门

C++ 第 5 题

C++ 第 5 题 选择和 output stream 最匹配的说法

6选择第一阶段 定义入门

C++ 第 6 题

C++ 第 6 题 选择和 integer type 最匹配的说法

7选择第一阶段 定义入门

C++ 第 7 题

C++ 第 7 题 选择和 vector push 最匹配的说法

8选择第一阶段 定义入门

C++ 第 8 题

C++ 第 8 题 选择和 reference 最匹配的说法

9选择第一阶段 定义入门

C++ 第 9 题

C++ 第 9 题 选择和 output stream 最匹配的说法

10选择第一阶段 定义入门

C++ 第 10 题

C++ 第 10 题 选择和 integer type 最匹配的说法

11选择第一阶段 定义入门

C++ 第 11 题

C++ 第 11 题 选择和 vector push 最匹配的说法

12选择第一阶段 定义入门

C++ 第 12 题

C++ 第 12 题 选择和 reference 最匹配的说法

13选择第一阶段 定义入门

C++ 第 13 题

C++ 第 13 题 选择和 output stream 最匹配的说法

14选择第一阶段 定义入门

C++ 第 14 题

C++ 第 14 题 选择和 integer type 最匹配的说法

15选择第一阶段 定义入门

C++ 第 15 题

C++ 第 15 题 选择和 vector push 最匹配的说法

16选择第一阶段 定义入门

C++ 第 16 题

C++ 第 16 题 选择和 reference 最匹配的说法

17选择第一阶段 定义入门

C++ 第 17 题

C++ 第 17 题 选择和 output stream 最匹配的说法

18选择第一阶段 定义入门

C++ 第 18 题

C++ 第 18 题 选择和 integer type 最匹配的说法

选择题

C++ 第 1 题

1选择新题

C++ 第 1 题 选择和 output stream 最匹配的说法

cout << 42;

参考

main.cpp 常用模式

C++17 compilerg++ main.cpp -std=c++17 && ./a.out
回忆输出看完一个小点后 合上提示自己写出来
手动跟踪运行前先逐行写出变量变化
亲手敲一遍少复制 多打字 每次只修一个小错

cin cout headers namespace

Input output

#include <iostream>
using namespace std;
int main() {
  cout << 42;
}
  • Include the right headers
  • Use cout for output
  • Return from main

int double bool string vector

Types

int score = 40 + 2;
cout << score;
  • Choose the right type
  • Watch integer division
  • Initialize variables

vector map set queue stack

STL

vector<int> v = {1, 2, 3};
cout << v.size();
  • Know the container behavior
  • Use size for count
  • Trace push pop operations