C++程序员应掌握数据结构、编译原理、操作系统、离散数学等理论方面的基础知识。此外,在编程实践中,还需具备一些具体技术要点,新进 C++程序员应在一年内完成学习“basic”类别知识点,两年内完成学习“advance”类别知识点,三到四年内完成学习“expert” 类别知识点。
一、语言相关
1、基础(Basic)
(1)变量与基本类型:语言内置类型、常量、变量的初始化、变量的作用域、变量的限定符、变量引用、枚举;
(2)typedef 和#define;
(3)数值与指针:数组定义与初始化、多维数值、指针操作;
(4)表达式:算术/逻辑计算、位运算、优先级、类型转换;
(5)语句:简单语句、声明/定义语句、复合语句、条件/循环控制语句、异常处理语
句;
(6)函数:函数声明、参数传递、堆栈概念、函数重载;
(7)标准IO:条件状态、缓冲区、文件流、字符流、本地化;
(8)类和数据抽象:类的定义与声明、类的构造函数、静态成员、拷贝构造函数、操
作符重载、类型转换;
(9)面向对象编程:数据(封装)抽象、继承、多态(动态绑定);
2、进阶(Advance)
(1)模板与泛型编程:模板定义、实例化、类模板成员、重载、特化;(2)智能指针:auto_ptr、shared_ptr、scoped_ptr;
(3)STL 容器:顺序容器(vector、list、deque、queue、priority_queue、string)和关
联容器(map、set、multimap、multiset);
(4)STL 算法:迭代器、算法;
(5)常用复杂数据结构:hash_map、boost.any、boost. array、boost. regex、boost. variant、
boost. multi_array、boost. pointer_container;
3、高级(Expert)
(1)高级泛型编程:表达式模板、模板元编程、Concept 编程;(2)程序架构,内存池,线程池;
(3)高级抽象:boost.mpl、boost.lambda、boost.fusion、boost.proto;
(4)范式应用:boost.spirit;
(5)应用程序库:boost.asio 、boost.graph、blitz++、Loki、CGAL、uBLAS;
二、系统相关
1、基础(Basic)
(1)Windows API 之基础服务:文件系统、注册表、内存管理、DLL、多媒体;(2)Windows API 之内核对象:句柄、信号、线程、进程、互斥、事件、文件映射、
命名管道、邮槽、计时器、完成端口;
(3)Windows API 之图形设备接口:设备上下文、打印、字体、笔/刷、路径、区域、
位图;
(4)Windows API 之图形用户界面:窗口、标题、菜单、状态栏、消息、图标、按钮、
编辑框、组合框、列表框、滚动条、通用对话框;
(5)环境配置及Shell 编程:环境变量、右键菜单、属性、关联;
(6)Socket 编程;
(7)Web 相关API;
2、进阶(Advance)
(1)MFC/ATL:文档视图结构、对话框、通用控件、OleDB、WinInet;(2)COM、自动化、ActiveX:Office 开发、IE 插件、VBA;
(3)高级图形系统:OpenGL、DirectX;
(4)二次开发:ObjectArx;
三、计算相关
1、计算机图形学
(1)向量:点积、叉积、求模、单位化、复合运算;(basic)(2)矩阵:算术运算、平移/旋转/缩放/错切等变换、求逆、特征值;(basic)
(3)四元组合欧拉角:与其他表示转换;(advance)
(4)参数曲线/曲面:贝塞尔、(非)均匀有理样条;(advance)
(5)三维几何体的构造与描述;(expert)
2、计算几何
(1)几何查找与判断:点与线、线与线、点与多边形;(basic)(2)多边形:简单多边形、凸多边形、多边形三角剖分;(advance)
(3)凸壳及其应用;(advance)
(4)Voronoi 图/三角剖分及其应用;(advance)
(5)多边形的交与并;(expert)
(6)平面图;(expert)
3、数值计算
(1)数值计算的三大任务:求值、解方程(组)、函数逼近;(basic)(2)数值计算的误差、适定性、稳定性;(basic)
(3)解线性方程组直接方法:Gauss 消元法、三角分解法;(basic)
(4)解线性方程组一般迭代方法:基本迭代、Jacobi 迭代、G-S 迭代、SOR/SSOR 迭代;
(advance)
(5)解线性方程组的变分迭代法:共轭梯度、预处理共轭梯度法;(expert)
(6)解非线性方程组迭代方法:Newton 迭代法、Newton-Raphson 迭代法、同伦算法;
(expert)
(7)求解矩阵特征值:乘幂法与反乘幂法、Rayleigh 商迭代法、QR 法、Krylov 子空间
法;(expert)
(8)插值:多项式插值、样条插值;(advance)
(9)数值积分:Simpson 公式、Gauss 积分;(basic)
(10)解常微分方程:欧拉法、Runge-Kutta 法;(advance)
(11)解椭圆方程:有限单元法、有限差分法、边界元法;(expert)