我只想删除基于范围的循环中的指定元素:
vector<int> vec = { 3, 4, 5, 6, 7, 8 };
for (auto & i:vec)
{
if (i>5)
vec.erase(&i);
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
我知道当在循环内调用 srand() 函数时,它将生成不同的随机数,因为srand()
在循环内并且循环可能完成不到一秒,因此我们每次都有相同的数字。我的问题是:为什么当它 srand()
脱离循环时它可以正常工作?如果循环完成时间不到一秒,那么种子又是,所有数字都相同......但它每次都会改变。尽管种子似乎保持不变。尝试以下代码:
int k = 5;
while (k--)
{
srand(time(0));
int num1 = rand() % 6;
cout << num1 << endl;
}
Run Code Online (Sandbox Code Playgroud)