time_t start;
time_t no_infection;
bool time_already_set = 0;
bool infected_or_not = 0;
int not_infected_t = 0;
我在struct中有这些变量,我想标记对象的起点和终点,而不是计算差异。
void bacteria::set_no_infection() {
if (infected_or_not == 0)
no_infection = clock();
}
首先我有
void bacteria::set_time() {
if (infected_or_not == 1 && time_already_set!=1) {
start = clock();
time_already_set = 1;
}
}
在我使用get函数测试它的程序中,时间变量似乎没有变化
double bacteria::get_time() {
if (infected_or_not == 1)
return ((clock() - start) / CLOCKS_PER_SEC);
else
return -1;
}
int bacteria::get_no_infection() {
if (infected_or_not = 0)
return ((clock() - no_infection) / CLOCKS_PER_SEC);
else
return -1;
}
在主程序中,我测试它是这样的:
while (1) {
for (int i = 0; i < b.size() - 1; i++) {
bactpop[i].set_no_infection();
bactpop[i].inf(phagepop[i], bactpop[i], p);
bactpop[i].kill_the_bacteria(b, i);
cout << " " << b[i].start << " " << b[i].no_infection << endl;
}
cout << p.size() << " " << b.size() << endl;
}
答案 0 :(得分:0)
我不确定,但我猜你的函数每秒被调用几次,因为clock()/ CLOCKS_PER_SEC以秒为单位返回值,差异将为0,因为调用是在同一秒内执行的。
例如,如果使用C ++ 11就可以使用例如具有微秒的gettimeofday或std :: chrono :: high_resolution_clock :: now()。