矢量带时钟push_back?

时间:2019-10-14 16:19:25

标签: c++ vector sfml

使用Vector,我可以在for循环中以正常方式执行push_back,但它的速度非常快。我正在尝试对其进行编码,但是却遇到了一些错误。没有时机就没有错误。我无法修复它,也无法在Internet上找到它。

while (window.isOpen()) {

    Time time = clock.getElapsedTime();
    second = time.asSeconds();

    for (int i = 0; i < randx.size(); i++) {
        rect.setPosition(rand() % 300, rand() % 500);
        if (second == 2) {
            rectshape.push_back(rect);
            clock.restart();
        }
    }

The error I got when I run the program.

1 个答案:

答案 0 :(得分:0)

似乎所有循环的迭代都将在“ second”的值等于“ 2”之前完成

因此,您可能可以使用某种睡眠功能而不是“ if”,例如,尝试使用this question中的信息

此外,如果您不想休眠所有程序,请检查正确答案from there

UPD:我已经使用correct answer's code并将其更改为vector的push_backs。 我认为它可以发挥您的作用

#include <stdio.h>
#include <time.h>
#include <vector>
#include <iostream>
using namespace std;

const int NUM_SECONDS = 2;
int main()
{
   int count = 1;

   double time_counter = 0;

   clock_t this_time = clock();
   clock_t last_time = this_time;

   vector<int> vect;

   while (true)
   {
       this_time = clock();

       time_counter += (double)(this_time - last_time);

       last_time = this_time;

       if (time_counter > (double)(NUM_SECONDS * CLOCKS_PER_SEC))
       {
           time_counter -= (double)(NUM_SECONDS * CLOCKS_PER_SEC);
           vect.push_back(count);
           cout << count;
           count++;
       }

   }

   return 0;
}

尝试