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(在数组/向量的情况下),而不是最大值,那么我们也必须在这里与=
进行比较。好的,打开函数实际返回的内容,但我们必须记住这一点。。。