C++问题:关于容器,迭代器的问题?

来源:百度知道 编辑:UC知道 时间:2024/06/28 16:13:50
vector<int> v (10);
vector<int>::iterator first = v.begin();
while (first != v.end() ){
first = v.insert (first, 42);
++first;
}
这段代码不会导致死循环吗?
书上好像是认为不会,但应该会啊????
真不知道它里面是怎么操作的??

我认为会导致死循环,insert的插入操作是在当前迭代器的前一位插入,然后返回该迭代器,first = v.insert (first, 42);执行完后first始终指向第一个,++first;执行后first指向第二个。这样不停地插入first始终指向的是v(10)的第一个位置。不会到末尾处

会死循环的,我试过了
是不是c++ primer上的啊,讲错了啊
v.insert返回插入对象的迭代器
++first则还是指向原来的位置

你给的这段代码是会导致死循环的,书上的代码印刷错误,原码是不会导致死循环的!这段代码跟作者本意是有出入的。