【问题标题】:Incrementing using iterator使用迭代器递增
【发布时间】:2017-07-24 14:58:32
【问题描述】:

我几天前才开始使用迭代器。虽然我确实了解基本概念,但我需要帮助来澄清一些事情。

我正在从一本书中学习 c++,在关于迭代器的章节末尾有一个小作业是这样的:

“假设“scores”是一个包含int类型元素的向量,那么下面的sn-p代码有什么问题(意在增加每个元素)?

vector<int>::iterator iter;

for(iter =scores.begin(); iter !=scores.end(); iter++)
{
    iter++;
}

现在,很明显迭代器 iter 已经被 for 循环递增,即使没有循环内的代码。所以我想我应该这样做来增加迭代器引用的向量的值。

for(iter =scores.begin(); iter !=scores.end(); iter++)
{
    *iter++;
}

但这也返回了一个错误。所以它让我思考......甚至可以使用迭代器增加值吗?还是迭代器只是一个对象,用于遍历容器中的对象并引用它们?无法实际修改它们的值?

【问题讨论】:

  • 使用括号应该可以解决这个问题:(*iter)++;。查找运算符优先级。

标签: c++ iterator


【解决方案1】:

改成:

for(iter =scores.begin(); iter !=scores.end(); iter++)
{
    (*iter)++;
}

在 C++ 中,运算符有不同的优先级,请参阅 here for a table

后缀增量在取消引用之前执行。

【讨论】:

    猜你喜欢
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2013-03-23
    • 2014-05-24
    相关资源
    最近更新 更多