Пишу программу для Белого пояса Яндекса 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. В чем ошибка?