gpt4 book ai didi

c++ - For 循环条件(整数 vector )。如何获取之前的值?

转载 作者:行者123 更新时间:2023-12-01 15:12:26 26 4
gpt4 key购买 nike

我有整数 vector ,仅由 1 填充或 0值。我想要做的是,当 当前 值为 1 以前的/旧的 0 或相反如果 Current=0Previous=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";
}
如您所见,我分配了迭代器 iiteration变量和 i - 1iterationDecrease . (我也尝试过 i-- 和类似的可能方法。)
我模拟了数据所以结果是 1,1,1,1,0,0,0,0 .当它从 1 改变时至 0它进入 if 条件,但每次下一次迭代它仍然返回 1就像旧值一样,即使它是 0 .
enter image description here
我还添加了屏幕截图以便更好地理解。右侧是控制台中的输出。

最佳答案

这里

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com