lundi 8 juillet 2019

Vector Size inside Loop

Hi i'm having some trouble with std::size of a vector, the code I have is this:

std::vector<double>
MouseRecords::distanceDuringClickLeft(const std::vector<MouseEvent> &events) {
  std::vector<double> results;
  double movementSum = 0.0;

  for (int i = 0; i < events.size(); ++i) {
    if (events[i].type == EV_MOUSE_LEFT_DOWN) {
      movementSum = 0.0;
      std::vector<MouseEvent> movEvents;

      while ((i < events.size() - 1) &&
      !(events[i].type == EV_MOUSE_LEFT_UP || events[i].type == EV_MOUSE_RIGHT_UP || events[i].type == EV_MOUSE_OTHER_UP)) {
        ++i;
        if (events[i].type == EV_MOUSE_MOVED) {
          movEvents.push_back((events[i]));
        }
      }
      int k = movEvents.size() - 1;
      for (int j = 0; j < k; ++j) {
        movemenstd::vector<double>
MouseRecords::distanceDuringClickLeft(const std::vector<MouseEvent> &events) {
  std::vector<double> results;
  double movementSum = 0.0;

  for (int i = 0; i < events.size(); ++i) {
    if (events[i].type == EV_MOUSE_LEFT_DOWN) {
      movementSstd::vector<double>
MouseRecords::distanceDuringClickLeft(const std::vector<MouseEvent> &events) {
  std::vector<double> results;
  double movementSum = 0.0;

  for (int i = 0; i < events.size(); ++i) {
    if (events[i].type == EV_MOUSE_LEFT_DOWN) {
      movementSum = 0.0;
      std::vector<MouseEvent> movEvents;

      while ((i < events.size() - 1) &&
      !(events[i].type == EV_MOUSE_LEFT_UP || events[i].type == EV_MOUSE_RIGHT_UP || events[i].type == EV_MOUSE_OTHER_UP)) {
        ++i;
        if (events[i].type == EV_MOUSE_MOVED) {
          movEvents.push_back((events[i]));
        }
      }
      int k = movEvents.size() - 1;
      for (int j = 0; j < k; ++j) {
        movementSum += std::sqrt(std::pow(movEvents[j + 1].axisX - movEvents[j].axisX, 2.0)
                                     + std::pow(movEvents[j + 1].axisY - movEvents[j].axisY, 2.0));
      }

      if (movementSum > 0) {
        result      for (int j = 0; j < k; ++j) {s.push_back(movementSum);
      }
      movementSum = 0.0;

    }
  }
  return results;
}um = 0.0;
      std::vector<MouseEvent> movEvents;

      while ((i < events.size() - 1) &&
      !(events[i].type == EV_MOUSE_LEFT_UP || events[i].type == EV_MOUSE_RIGHT_UP || events[i].type == EV_MOUSE_OTHER_UP)) {
        ++i;
        if (events[i].type == EV_MOUSE_MOVED) {
          movEvents.push_back((events[i]));
        }
      }
      int k = movEvents.size() - 1;
      for (int j = 0; j < k; ++j) {
        movementSum += std::sqrt(std::pow(movEvents[j + 1].axisX - movEvents[j].axisX, 2.0)
                                     + std::pow(movEvents[j + 1].axisY - movEvents[j].axisY, 2.0));
      }

      if (movementSum > 0) {
        results.push_back(movementSum);
      }
      movementSum = 0.0;

    }
  }
  return results;
}

the problem is with movEvents.size() in the second loop, like this it works, but using it like this:

      for (int j = 0; j < movEvents.size(); ++j) 

Completely breaks it as the value given by movEvents.size() is incorrect (gives a giant number that is definetly not the size of the vector) What am i doing wrong? I'd rather have it setup with movEvents.size()

Aucun commentaire:

Enregistrer un commentaire