搜狗2015c++工程师笔试题
1.下面关于迭代器失效的描述哪个是错误的()
A. vector的插入操作不会导致迭代器失效
B. map的插入操作不会导致迭代器失效
C. vector的删除操作只会导致指向被删除元素及后面的迭代器失效
D. map的删除操作只会导致指向被删除元素的迭代器失效
解释:vector是顺序存储的,只有在尾部插入才不会导致迭代器失效,在头部插入或者中间插入都会导致插入的部位以及其后的所有迭代器都失效;
map是映射,key和value是一一对应的,在内存中是零散存在的,迭代器通过key找到value,无论怎么插入都不会让迭代器失效,当然删除只会使得被删除元素的迭代器失效
2.函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数()
A int a[4][4];
B int **a;
C int **a[4]
D int (*a)[4];
可以看出fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。
A,二维数组,不符合
B,二级指针,也就是指针指向的内容也还是存放指针的,符合
C,二级指针数组,数组的内容是二级指针,不符合
D,数组指针,不符合
3. 下面哪个API返回的不属于windows内核对象()
A. CreateFile
B. CreateSemaphore
C. CreateDC
D. eateEvent
解释:ABD选项是内核对象:事件对象HANDLE CreateEvent();文件对象HANDLE CreateFile();信号量对象HANDLE CreateSemaphore();
C选项是GDI对象。设备上下文(HDC) CreateDC
待续。。。。。。。