C++初学者学习指南

环境

  • 编程工具:VSCode
  • 插件:
    • Bazel
    • C/C++
    • Clang-Format
    • Vim

在这里插入图片描述

职业选择

  • AI领域:
    • 算法框架(Tensorflow, Pytorch)
    • 图像(OpenCV)等
  • 基础架构领域:
    • 网络,数据库,运维等;
    • grpc/brpc,postgrepsql等;
  • 音视频领域:
    • ffmpeg
    • v4l
    • OpenCV
  • 图形游戏领域:
    • opengl
    • unity

基本技能

  • C++基础知识
  • 专业领域知识
  • 算法
  • 计算机基础知识

新特性与学习曲线

  • 2003年,标准委员会针对98版本中的诸多问题进行了修订后发布了C++03
  • 2005年,标准委员会发布了一份技术报告,详细说明了计划引入的新特性,非正式的命令C++0x
  • 2011年,C++0x正式发布,成为了现代C++的基础

在这里插入图片描述

针对每个人的情况学习路线也不一样:

  • 有任何编程基础,直接写Demo
  • 无任何编程基础,老老实实看书
    • C++ 11标准
    • 《Effective modern C++》
    • 《STL源码剖析》
    • 《C++那些事》git地址:CplusPlusThings

需要掌握的有:

  • 移动语义
  • 右值引用
  • 智能指针
  • 容器:
    • vector
    • map
    • unordered_map
    • list
    • set
    • traits
  • 模版
  • Lambda

高阶技能

C++模版元编程

template <typename F, typename R, typename... A>
static std::integral_constant<int, sizeof..(A)> argument_count_impl(R(F::*)(A...));

在这里插入图片描述

线程池,异步任务

单个线程工作一般而言是可以的,但复杂的工程项目可能需要异步多线程多进程,这个时候需要线程池,异步任务操作了。
参考资料:

C++ 相关工具及资源

C++ Tools

C++ Resources

项目

大项目

小项目

如何学

  • 查阅相关资料,先收集一波,看看大概有什么东西
  • 选择阅读的方向,简单->困难,还是困难->简单
  • 理解其设计思想,并记录笔记实践

Leveldb为例子:

  • 第一步:先compile and run
  • 第二步:先看看系统的架构长什么样子,有哪些模块
  • 第三步:挑一个简单的练练手,看看有多难
  • 第四步:深入核心,探究其设计
  • 第五步:自己仿写,改造,重构

未来期望

  • 如何调试
  • 如何管理内存
  • 如何快速使用c++ 20编写一个小demo
  • 如何理解大项目的脉络
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值