【问题标题】:"Vector iterator not incrementable", Populating a vector at multiple indexes.“向量迭代器不可递增”,在多个索引处填充向量。
【发布时间】:2013-08-31 05:10:45
【问题描述】:

在尝试使用 for 循环填充 char 向量时遇到了这个错误,“Vector iterator not incrementable”。该循环应该检查第一个向量中每个正确字母的索引位置,然后相应地用相同索引处的字母填充第二个向量。循环中有什么东西导致了这个错误吗?

    for (filler = word.begin(); filler != word.end(); filler++)
    {
        if (*filler == letter)
            guess.insert(filler, letter);
    }

【问题讨论】:

  • 您不能将一个向量的迭代器用于另一个向量的函数。只需使用std::copy_if
  • @chris 我不熟悉 copy_if。在阅读了关于我尝试“copy_if(word.begin(),word.end(),guess.begin(),字母);”之后但这会导致另一个错误 C2064。越来越近了?
  • @user2734876, 你需要一个谓词函数。
  • @chris 所以要检查“字母”和迭代器引用是否相同?好吧,让我试一试。谢谢。

标签: c++ vector


【解决方案1】:

filler 是向量“单词”的迭代器。它不能用作插入猜测的第一个参数,因为过滤器不指向猜测。

如果您希望它出现在同一个索引处,您可以使用填充符重建索引 - word.begin()。然后你可以用它来索引猜测

for (filler = word.begin(); filler != word.end(); filler++)
{
    if (*filler == letter)
        guess.insert(guess.begin() + (filler - word.begin()), letter);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多