Ale*_*lex 1 c++ class operators
我从结构中创建了一个向量来存储多种类型的值.但是,我无法获得投入工作.
#include "std_lib_facilities.h"
struct People{
string name;
int age;
};
int main()
{
vector<People>nameage;
cout << "Enter name then age until done. Press enter, 0, enter to continue.:\n";
People name;
People age;
while(name != "0"){
cin >> name;
nameage.push_back(name);
cin >> age;
nameage.push_back(age);}
vector<People>::iterator i = (nameage.end()-1);
nameage.erase(i);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试在main函数中使用name和age变量为string/int类型,虽然这解决了操作符问题,但它会导致push_back行中函数调用的问题.
PS是否可以push_back多个输入,如...
cin >> name >> age;
nameage.push_back(name,age);
Run Code Online (Sandbox Code Playgroud)
?
为什么不这样做:
People p;
cin >> p.name;
cin >> p.age;
nameage.push_back( p );
Run Code Online (Sandbox Code Playgroud)
你不能只是cin >>p,因为istream不了解如何输入"People"对象.所以,你可以定义operator>>为People,或者你可以在阅读的各个字段到人反对.
另外,请注意,您需要push_back一个类型的对象People,因为这就是您vector的 - 它是一个People容器.