C++ &引用;向量迭代器不可递增";,在多个索引处填充向量。

C++ &引用;向量迭代器不可递增";,在多个索引处填充向量。,c++,vector,C++,Vector,在尝试使用for循环填充char向量时,遇到了这个错误“Vector iterator not incrementable”。循环应该检查第一个向量中每个正确字母的索引位置,然后用相同索引处的字母填充第二个向量。循环中是否有东西导致此错误 for (filler = word.begin(); filler != word.end(); filler++) { if (*filler == letter) guess.insert(fill

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

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

filler是向量“word”的迭代器。它不能用作插入guess的第一个参数,因为filter不指向guess

如果希望它出现在同一索引中,可以使用filler-word.begin()重新构造索引。然后你可以用它来索引猜测

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

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