作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有整数 vector ,仅由 1
填充或 0
值。我想要做的是,当 当前 值为 1 和 以前的/旧的 是 0 或相反如果 Current=0
和 Previous=1
,然后将另一个变量( AvgCan
)分配给 0
.
我正在尝试从 FOR 条件中获取以前的值。但是,如果我以通常的方式尝试它,我仍然会始终获得相同的值,直到循环结束。问题出在第一个 if 语句中。
int AvgCan = 0;
int OldAvgCan = 0;
int iteration = 0;
int iterationDecrease = 0;
for (int i = 0; i < resultINT.size(); i++)
{
//myFileO << to_string(resultINT.at(i)) + "\n";
cout << to_string((resultINT.at(i))) + " Current" + "\n";
cout << to_string((resultINT.at(i - iteration))) + " Old" + "\n" << endl;
cout << to_string(AvgCan) + "\n" << endl;
iteration = i;
iterationDecrease = i - 1;
if ((resultINT.at(i)) != (resultINT.at(iteration - iterationDecrease)))
{
AvgCan = 0;
}
if ((resultINT.at(i)) == 1)
{
/*if ((resultINT.at(i- iteration)) != 1)
{
AvgCan = 0;
}*/
AvgCan++;
}
if ((resultINT.at(i)) == 0)
{
/*if ((resultINT.at(i- iteration))!=0 )
{
AvgCan = 0;
}*/
AvgCan--;
}
myFileO << to_string(AvgCan) + "\n";
}
如您所见,我分配了迭代器
i
至
iteration
变量和
i - 1
至
iterationDecrease
. (我也尝试过
i--
和类似的可能方法。)
1,1,1,1,0,0,0,0
.当它从
1
改变时至
0
它进入 if 条件,但每次下一次迭代它仍然返回
1
就像旧值一样,即使它是
0
.
最佳答案
这里
iteration = i;
iterationDecrease = i - 1;
if ((resultINT.at(i)) != (resultINT.at(iteration - iterationDecrease)))
iteration - iterationDecrease
等于
i - (i - 1)
总是
1
.实际上意味着
if
该语句等效于
if ((resultINT.at(i)) != (resultINT.at(1)))
你可能是说
if (resultINT.at(iteration) != resultINT.at(iterationDecrease))
这仍然不正确,如
i==0
,
iterationDecrease = -1
这将引发异常,用于调用
.at(-1)
您需要从
i=1
开始因此,在循环中,
for (int i = 1; i < resultINT.size(); i++)
{
// ...code
if (resultINT[i] != resultINT[i-1])
{
// ...code
}
}
关于c++ - For 循环条件(整数 vector )。如何获取之前的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63320498/
我是一名优秀的程序员,十分优秀!