Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 方法每次调用时的增量变量_C++_Loops_Variables_Increment - Fatal编程技术网

C++ 方法每次调用时的增量变量

C++ 方法每次调用时的增量变量,c++,loops,variables,increment,C++,Loops,Variables,Increment,我有这个方法: void Session::onNewImage(cv::Mat& img, double elapsedTime){ static int count = 0; add(img, dnnOutput[count++], curLati, curLongi, curAlti, curHeading, curRoll); } 已经叫了1400次了。每次“计数”的值递增时。但当它在1401次出现时,我希望“count”变为0,然后再次递增。我不希望“coun

我有这个方法:

void Session::onNewImage(cv::Mat& img, double elapsedTime){
    static int count = 0;
    add(img, dnnOutput[count++], curLati, curLongi, curAlti, curHeading, curRoll);
}
已经叫了1400次了。每次“计数”的值递增时。但当它在1401次出现时,我希望“count”变为0,然后再次递增。我不希望“count”是一个全局变量。我怎样才能做到这一点

另外,我不能硬编码为1400。每次都会不一样。还有另一种方法,它决定调用此方法的次数,这取决于作为该方法输入的图像数量

这应该可以做到:

void Session::onNewImage(cv::Mat& img, double elapsedTime){
    static int count = 0;

    if (count >= getYourCountLimitFromSomewhere())
        count = 0;

    add(img, dnnOutput[count++], curLati, curLongi, curAlti, curHeading, curRoll);
}

请注意,正如@Aconcagua在评论中指出的那样,
count
与阈值的比较是通过
还是
=
取决于
GetYourCountLimitFromSomeone()
返回值的含义。

如果(count>1400)count=0?使用%(模数)运算符。该值1400是dnnOutput的大小?这是一个数组还是一个向量?很抱歉给出“其中一个”的评论,但也许你最好解释一下你想要实现什么。您寻求的实际解决方案可能不在这个特定函数的细节中,而是在实现的总体设计中。很明显,您在这个方法中访问的类上有一些状态,并且您对该状态进行了假设;该状态与您的
count
变量有何不同?了解@odyss jii和前面的注释:假设最大计数为dnnOutput的大小,它可能是
std::vector
,那么您可以执行e。g<代码>计数=(计数+1)%dnnOutput.size()。到目前为止还不错。但是如果您在0重新启动,您是否已确保在重新使用映像之前已完成对映像的任何处理?或者至少,如果
newImage(0)
newImage(1400)
重复使用相同的数据,就不会有冲突?实际上,我喜欢这比我的建议更好,我认为它更清晰。我只是在偷懒。当我看到
%
建议时,我发现它比这个简单的方法要好:)不过,在可读性方面,你可能是对的。我忘了提一下。我不能硬编码为1400。每次都可能不同。但是如何指定最大调用数呢?还有一个问题:问题是“循环应运行1400次,第1401次运行应以0重新启动”-假设循环运行计数是基于1的,我们必须比较
如果(计数>=1400)
,而不是像以前那样
。因此,如果limit函数返回的是size(在数组/向量的情况下),而不是最大值,那么我们也必须在这里与
=
进行比较。好的,打开函数实际返回的内容,但我们必须记住这一点。。。