现在的位置: 首页 > 综合 > 正文

迭代器

2013年03月14日 ⁄ 综合 ⁄ 共 372字 ⁄ 字号 评论关闭

deque<double>::iterator insertLocation = d.begin(); // 记下d的
// 起始迭代器
for (size_t i = 0; i < numDoubles; ++i) { // 在insertLocation
d.insert(insertLocation++, data[i] + 41); // 插入data[i]+41,然后
}

看起来象双赢,它不只是递增了指示插入位置的,还避免了循环每次对begin的调用;这就像我们前面讨论过
的一样,消除了影响效率的次要因素。唉,这种方法陷入了另外一个的问题中:它导致了未定义的结果。每
次调用deque::insert,都将导致所有指向deque内部的迭代器无效,包括上面的insertLocation。在第一次调用
insert后,insertLocation就无效了,后面的循环迭代器可以直接让人发疯。

抱歉!评论已关闭.