循环遍历C ++中

时间:2017-02-17 00:33:39

标签: c++ string loops vector stl

比如说,我有一个向量。向量包含i项。假设我想循环遍历向量的每个元素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';
    }
}

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

2 个答案:

答案 0 :(得分:1)

std::vector有一个size函数可用于迭代:

for (std::size_t i = 0; i < strvec.size(); i++)
{
    for (std::size_t j = 0; j < strvec[i].size(); j++)
    {
        strvec[i][j] = 'k';
    }
}

答案 1 :(得分:1)

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

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