举例来说,我有一个 vector 。 vector 包含i个项目。假设我想遍历 vector 每个元素i中的所有位置j。我尝试使用嵌套的for循环执行以下代码中的过程。它尝试将每个元素更改为所有ks,如下所示:

vector<string> strvec;
strvec.push_back("Dog");
strvec.push_back("Cat");

for (int i = 0; i < strvec.length; i++)
{
    for (int j = 0; j < strvec[i].length; j++)
    {
        strvec[i][j] = 'k';
    }
}

每当以这种方式使用循环时,即使在嵌套循环中的代码之前(从嵌套循环的开头开始),上述代码也将获得错误消息。有没有办法遍历有效且有效的字符串 vector 的每个元素中的每个字符?

最佳答案

这是一种使用引用和基于范围的for的方法。每当您必须从头开始迭代容器时,请首先尝试基于范围的for。它不像手动控制那样通用,但是确实很难出错。

for (string & str: strvec)
{
    for (char & ch: str)
    {
        ch = 'k';
    }
}

08-16 08:19