Как заполнить vector C++ элементами структуры с полем данных?

Пишу программу для Белого пояса Яндекса C++. Есть структура:
struct man {
    bool isWorry = false; // беспокойный
    bool isQuiet() {
      if (this->isWorry) {
        return false;
      } else {
        return true;
      }
    } // спокойный
    int data = 0;
} turnMan;

и есть main.cpp с функцией
int main() {
  register_commands();
  std::vector<man> turn;
  int nums;
  std::cin >> nums;
  std::string commandName;

  while(nums != 0) {
    nums--;
    std::cin >> commandName;

    switch (commands[commandName]) {
      case COME: {
        int person;
        std::cin >> person;
        if(person > 0) {
          addMan(turn, person);
          continue;
        } else if (person < 0) {
          delMan(turn, person);
          continue;
        }
      }
    }


  }

  std::cout << turn.size() << std::endl;
  for(man m : turn) {
    std::cout << m.data << " ";
  }

  return 0;
}

std::vector<man> addMan(std::vector<man>& v, int n) {
  //man turnMan;
  for(int i = 0; i < n; i++) {
    v.push_back(turnMan);
    v[i].data = i;
  }
  return v;
}

Проблема в том, что addMan первый раз заполняет поле data, а вот если я повторно в этом же цикле вызову функцию - то она добавляет новые элементы структуры в vector со значением поля data по-умолчанию равным 0. В чем ошибка?
  • Вопрос задан
  • 2566 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы