在下面的程式中,我創建了3個Person類的物件,并將該物件推入矢量容器。之后,使用一個基于范圍的for回圈呼叫顯示函式,并列印姓名和年齡。
#include <iostream>
#include <vector>
#include <iterator>
#include <functional>
using namespace std;
class Person
{
private:
string _name;
int _age;
public:
Person()
{
}
Person(string name, int age) : _name(name) , _age(age)
{
}
void Display()
{
cout<<"_name : "<<_name<<" => "<<"_age : "<<_age<<;endl。
}
};
int main()
{
人p1("User1", 20)。
Person p2("User2"/span>, 30);
Person p3("User3"/span>, 25);
vector<Person> per(3)。
per.push_back(p1)。
per.push_back(p2)。
per.push_back(p3)。
for(auto obj : per)
{
obj.Display()。
}
}
但是我不明白我在這里缺少什么來獲得輸出
_name : => _age : 1
_name : => _age : -1
_name : => _age : -1 _name : User1 => _age : -1
_name : User1 => _age : 20 _name : User1 => _age : 20
_name : User2 => _age : 30 _name : User2 => _age : 30
_name : User3 => _age : 25 _name : User3 => _age : 25
代替
_name : User1 => _age : 20
_name : User2 => _age : 30 _name : User2 => _age : 30
_name : User3 => _age : 25 _name : User3 => _age : 25
預先感謝。
uj5u.com熱心網友回復:
當你定義向量時:
vector<Person> per(3)。
你將大小設定為3,這意味著將創建三個默認構建的元素并添加到矢量中。
然后你再添加三個,所以你在矢量中總共有六個元素。
如果你只想要你的三個元素,有一些替代方案:
如果你只想要你的三個元素,有一些替代方案:
只保留記憶體,不設定大小:
vector<Person> per; per.reserve(3); // Allocates memory for 3 elements, doesn't set the size。 per.push_back(p1)。 per.push_back(p2)。 per.push_back(p3)。不要回推,使用索引來設定元素:
vector<Person> per(3)。 per[0] = p1; per[1] = p2; per[2] = p3。用你想要的元素初始化向量:
vector<Person> per = { { "User1", 20 }, { "User2", 30 }, { "User3", 25 }, ? };
uj5u.com熱心網友回復:
你正在創建一個大小為3的向量,之后,你又向該向量添加了3個元素。試著在插入3個人之后,列印出存盤在你的向量中的元素數量(per.size())。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314115.html
標籤:
