摘要:
1、STL中,请写出vector和list各自的优点缺点。请写出map的数据结构组织方式以及查找的时间复杂度vector 向量相当于数组,在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储。当存储的内容超过此分配空间时再进行整理的重新分配一块内存存储。优点: 不指定一块内存大小的数组的连续存储,既可以像数组一样操作,但可以对此数组进行动态操作。push_back()与pop_back(); 随机访问方便,即[]操作和vector.at(); 自动调整内存,节省空间缺点: 实现插入与删除操作效率低 ,只能... 阅读全文
摘要:
构造函数不能声明为虚构函数。原因有2 : 1、虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。纯虚构函数: 纯虚函数是指不必再基类中定义,但必须在派上类中被覆盖的函数。其函数声明格式为virtual 函数名() = 0; 通常纯虚函数用来定义接口或抽象类 阅读全文
摘要:
字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。 1. Little endian:将低序字节存储在起始地址 2. Big endian:将高序字节存储在起始地址例子:在内存中双字0x01020304(DWORD)的存储方式 内存地址4000&4001&4002&4003LE 04 03 02 01BE 01 02 03 04例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为 BE LE0x0000 0x12 0xcd0x0001 0x34 0xab0x0002 0xab 0x340x0003 0xcd 0x12x86系 阅读全文
摘要:
一、Static全局变量和全局变量的区别 1)全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量.. 阅读全文
摘要:
转载http://blog.csdn.net/zdl1016/article/details/5941330STL的线程安全. 说一些关于stl容器的线程安全相关的话题。一般说来,stl对于多线程的支持仅限于下列两点:(貌似Effective STL中有描述)1.多个读取者是安全的。即多个线程可以同时读取一个容器中的内容。 即此时多个线程调用 容器的不涉及到写的接口都可以 eg find, begin, end 等.2.对不同容器的多个写入者是安全的。即多个线程对不同容器的同时写入合法。 但是对于同一容器当有线程写,有线程读时,如何保证正确? 需要程序员自己来控制,比如:线程A读容器某一项时, 阅读全文