在向量C ++中用随机数替换元素

时间:2017-12-17 13:59:05

标签: c++ vector random

假设我有一个名为numsVec的向量,我想用给定范围内的一些随机数替换该向量中数字10的所有出现。

这是我的方法:

auto it = std::find(numsVec.begin(), numsVec.end(), 10);
for(it; it != numsVec.end(); it++) {
    *it = rand() % 9 + 1;
}

这有效并用1和1之间的其他随机数替换了所有10 s。 9;但我得到了这个警告。

  

警告:声明无效[-Wunused-value]      for(it; it!= numsVec.end(); it ++)

我想知道为什么以及如何摆脱这种警告? 顺便说一下,我想知道我是否可以使用here来做同样的事情。如果是,有人可以提供这样做的方法吗?

提前致谢。

修改

根据评论说我提供的代码不符合我想要实现的目标。我可能会以错误的方式做到这一点。因此,请允许我简单地询问如何用一些随机数替换给定的元素值。

编辑2:

感谢您的评论,我通过以下方式摆脱了警告:

for(; it != numsVec.end(); it++) {
        *it = rand() % 9 + 1;
    }   

因为我这样做的方式似乎不对。我仍然要问我原来的问题:

如何使用随机数替换元素?

1 个答案:

答案 0 :(得分:1)

您可以链接find个调用,但在这种情况下,我认为最明确的选项是一个简单的自动循环,因为无论具体实现如何,都必须触及每个元素:

for(auto it : numsVec)
{
    if(*it == 10)
    {
        *it = rand() % 9 + 1;
    }
}