您的位置:首页 > 编程语言 > C语言/C++

关于C++学习的几个建议

2009-11-02 10:04 387 查看
常听人问编程一般是C++或者java该怎么学,我想说几点误区:
1.      
自我安慰型,一些编程没什么基础,刚开始想学编程的人,通常是这样的:
觉得自己该动手学习下编程,买了一本书,一般是C++ primer或者core java, 一天看了几页或者十几页,自我安慰觉得自己就是在学习编程了,我对他们的建议是,你一天不看一百页,至少五十页那根本就是没有进展,纯粹自我安慰,觉得自己学到东西,那真只能是阿Q,留学生很多都是考过G的,当年背红宝书的时候,如果你一天背一两页,那一年也背不完,背到后面也忘了前面;
2.      
一些人觉得自己本科学过C++,以为自己就会编程了,结果碰到一个问题就是需要一个程序运行期才能确定大小的数组就没辙了,因为数组必须在编译时期确定大小。首先,你应该能够想到链表list,这是本科二年级水平,其次,你应该知道C++里有STL,如果你没有听过,而且你是计算机系的,同学,请你反省一下。STL里有动态数组就是vector, 可以任意在运行时增长,当然有一些overhead, 碰到capacity不足,会有重新分配更大空间和拷贝原来内容至新空间的过程,但如果你能够预计到大小,建议用reserve(size)方法,就是预留size大小的capacity,减少上述过程。当然,STL 不止提供动态数组vector,也有链表list, 其次最常用的就是map, 其实就是script语言里的associate array, key-value pair, 通过key来直接访问value,
C++ STL里map的实现是用balanced tree,所以访问速度是logN,相当之快的,比起自己去实现一个容易出错的tree实在是方便很多;还有set, multiset, multimap, 通过这些数据结构的组装可以容易达到自己的数据结构需要(除非有非常特殊的需要)
3.      
所以我觉得作为一个计算机专业或者立志于从事IT软件行业的人,并且你主要语言是C++, 如果你不知道STL,你的C++水平最多三成,如果你不懂OS(Windows或者Linux/Unix)工作原理和system call, 你的C++水平最多也只有六成,因为C++是离不开OS的,就像鱼离不开水,你的任何C++程序都是运行在OS上一层,了解下一层的OS的工作原理和进程调度,内存分配(堆/栈),进程通信IPC都是十分必要的。
这是我的CSDN blog的首篇原创,多谢支持!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息