Рассмотрите следующую программу. По существу у меня есть struct
имя человека, которое по умолчанию содержит name="NO NAME"
и age = 0
. Теперь я сначала создаю вектор, который добавляет к нему 5 Person
. Даже работал в отладчике, после того, как цикл for завершил его только 5-векторный размер, по умолчанию Person
. Однако, когда я иду печатать, что-то идет не так.Передача структуры в вектор, вектор печати дает странные результаты
Я прежде всего передаю в const
вектор, так как я ничего не меняю. Используя printf
, я делаю это: list_of_persons.at(i).name, list_of_persons.at(i).age
, чтобы просто распечатать имя и возраст человека. Вы ожидали бы, что это будет NO NAME
и 0
, так как я не изменил значение по умолчанию, но мой cmd дает мне что-то другое, и я не знаю почему?
// Example program
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main();
struct Person {
string name = "NO NAME";
int age = 0;
};
void print_vector(const vector <Person> &);
int main()
{
vector<Person> list_of_persons;
for (unsigned int i = 0; i < 5; i++)
{
struct Person p;
list_of_persons.push_back(p);
}
print_vector(list_of_persons);
printf("\n");
system("pause");
return 0;
}
void print_vector(const vector<Person>& list_of_persons)
{
for (unsigned int i = 0; i < list_of_persons.size(); i++)
{
printf("Person %d \n", i);
printf("Name: %s\nAge: %d \n \n", list_of_persons.at(i).name, list_of_persons.at(i).age);
}
}
C и C++ являются _different languages_! – ForceBru