前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++初学者学习指南

C++初学者学习指南

作者头像
用户3578099
发布2023-09-01 09:35:12
1750
发布2023-09-01 09:35:12
举报
文章被收录于专栏:AI科技时讯

环境

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

1.png

职业选择

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

基本技能

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

新特性与学习曲线

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

2.png

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

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

需要掌握的有:

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

高阶技能

C++模版元编程

代码语言:javascript
复制
template <typename F, typename R, typename... A>
static std::integral_constant<int, sizeof..(A)> argument_count_impl(R(F::*)(A...));

3.png

线程池,异步任务

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

  • C++ 20 coroutine
  • Mutex
  • unique_lock
  • xxx_lock
  • atomic
  • cv
  • promise
  • future
  • routine
  • ...

C++ 相关工具及资源

C++ Tools

  • Online Debugger:https://www.onlinegdb.com/online_c++_debugger
  • BenchMark: https://quick-bench.com
  • CppInsights: https://cppinsights.io

C++ Resources

  • gcc: https://gcc.gnu.org/projects/cxx-status.html
  • cppreference: https://en.cppreference.com/w/
  • isocpp:https://isocpp.org/get-started
  • AnthonyCalandra: https://github.com/AnthonyCalandra/modern-cpp-features
  • awesomecpp:https://awesomecpp.com

项目

大项目

  • STL: https://github.com/gcc-mirror/gcc
  • LLVM: https://github.com/llvm/llvm-project
  • Boost:https://github.com/boostorg/wiki/wiki/Getting-Strated%3A-Overview

小项目

  • CPTL(Thread Pool):https://github.com/vit-vit/ctpl
  • Leveldb:https://github.com/google/leveldb
  • SQLiteCpp:https://github.com/SRombauts/SQLiteCpp
  • Muduo: https://github.com/chenshuo/muduo

如何学

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

Leveldb为例子:

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

未来期望

  • 如何调试
  • 如何管理内存
  • 如何快速使用c++ 20编写一个小demo
  • 如何理解大项目的脉络
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技时讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 职业选择
  • 基本技能
  • 新特性与学习曲线
  • 高阶技能
    • C++模版元编程
      • 线程池,异步任务
      • C++ 相关工具及资源
        • C++ Tools
          • C++ Resources
          • 项目
            • 大项目
              • 小项目
              • 如何学
              • 未来期望
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档