您的位置:首页 > 职场人生

面试遇到的问题

2016-09-28 22:08 183 查看
1、迭代器失效问题

最重要的问题是v.erase()返回值是当前删除节点的下一个节点,第一次写代码时,虽然想到了,但一时脑热,写出了下面的代码

vector<int>::iterator it = v.begin();
while (it != v.end())
{
if ((*it) == 3)
{
v.erase(it);
}
else
{
++it;
}
}


很明显,这样在删除一个节点后直接访问内存崩溃

就是一个小小的erase的问题,直接导致面试没过,以后一定要注意这些细节。。。。。

2、一个sizeof引发的血案

看下面的代码

vector<T> v;
v.reserve(10);
cout << sizeof(v) << endl;


上面代码输出什么,我当时头脑发热,直接觉得这个是错误的,当时不知道这个题考点在哪。

在windows10,vs2013下,输出为16,因为sizeof为求类型的大小,vector底层有四个成员变量



所以对vector求类型大小为16.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  迭代器 vector