从零开始的 C++ 学习之旅

前言

本文将介绍 C++ 的相关历史背景编译环境IDE以及介绍 C++ 的学习路线

主要介绍有关于信息学奥赛所需要的知识点,面向对象所需的类与对象知识不在本文讨论。

在阅读过程中有任何问题都可以发布到评论区,有价值的问题将会放到文章末尾Q&A之中!

第一段 C++ 代码

1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main()
{
cout << "Hello, world!" << endl;
return 0;
}

C++ 的发展经历

C++C Plus Plus)是一种高级语言,它是由 Bjarne Stroustrup1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。

同时,在信息学奥林匹克竞赛【以下简称信奥赛】中,C++ 是唯一可以使用的语言。

C++ 的标准库

标准的 C++ 由三个重要部分组成:

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

IDE(集成开发环境)

CodeBlocks

Code::Blocks是一个免费开源的C/C++IDE,最早的版本发布于2005年,一个开源的跨平台集成开发环境(IDE),主要用于 C、C++ 和 Fortran 等编程语言的开发。也可以说是专门为C/C++搭建的IDE,它拥有其他IDE的基本功能,更多功能通过下载插件来获得,与其他IDE相比相对简单,对于新手也比较友好。

下载链接

使用方法

打开软件之后就是如下页面。

codeblocks使用教程1

点击左上角新建文件图标选择 Empty File 新建一个空白文件。

codeblocks使用教程2

新建空白文件之后点击Ctrl + s 保存文件。

codeblocks使用教程3

保存文件时要注意后缀名改为cpp,即文件保存为 xxx.cpp

codeblocks使用教程4

注意保存路径及文件名均不可使用中文

保存完成之后即可在该页面进行代码的编写。

DEV C++

这是一款免费的,功能齐全的集成IDE,主要适用于刷题,推荐初学者使用。占用内存小,轻量级IDE,在C语言初阶学习和刷题时是很好用的工具,但不适用于后期的调试和项目开发(没有其他IDE那么明显直观),前期学习C语言/C++必备神器!

下载链接

使用方法

Visual Studio Code(VS Code)

Visual Studio Code(VS Code)是由Microsoft创建的开源,跨平台源代码编辑器。由微软开发,针对 Web 开发人员和前端工程师而设计。这是一款功能强大,可编译多语言的IDE,不仅仅是C/C++,Python,Java等编程语言都可以进行编译运行,并且目前不仅支持Windows,还支持于Mac和Linux。VS Code自身足够轻巧强大,并且有一个看满足绝大部分功能的完全免费版本,以及有附加功能和支持的企业版本。此外,VS Code中可下载大量实用插件,它可能是市面上最好的免费IDE。

下载链接

使用方法

C++ 学习路线

C++ 基础语法

C++ 的基础语法知识主要包括数据类型、数据结构、判断逻辑结构、循环逻辑结构、函数、指针等等。

基本数据类型与数据结构

C++ 的数据类型与数据结构主要包括变量、输入输出、运算等基本结构。

判断逻辑结构

C++ 的判断逻辑结构主要包括 if 判断 的基本使用方法。

循环逻辑结构

C++ 的循环逻辑结构相关的知识点主要包括while 循环、 do-while 循环for 循环的基本使用方法。

数组

C++ 的数组相关的知识点主要包括一维数组、多维数组数组的基本函数等知识点。

函数

C++ 的函数相关的知识点主要包括无参函数、有参函数函数的递归与调用等知识点。

指针

C++ 的指针相关的知识点主要包括指针的定义、引用地址相关的知识点。

C++ 算法与数据结构

C++ 的算法与数据结构是信奥赛最重要的部分!

C++ 的算法主要包括排序、贪心、二分、搜索与图论、数论、动态规划与一系列基础算法

基础数据结构

C++ 的数据结构主要包括链表、栈、队列、KMP、堆、Trie树、并查集,HASH表与STL的基础用法等等。

C++ 的 STL 主要包括是C++内置的标准模板库、集成了大部分的数据结构的基础操作

基础算法

C++ 的基础算法主要包括的排序、二分、贪心、高精度、前缀与差分等等基础算法。

搜索与图论

C++ 的搜索与图论算法主要包括的DFS、BFS、最短路与最小生成树算法。

数论

C++ 的数论算法主要包括的质数、约数、容斥原理与博弈论等等基础数学算法。

动态规划【DP】

C++ 的动态规划算法主要包括的背包问题、线性DP、区间DP、树形DP与记忆化搜索等等基础DP算法。