将对象从向量插入到指针列表
Inserting an object from a vector to a list of pointers
我正在尝试将对象从向量推回指针列表。不幸的是,我的方法不能正常工作。
list<CStudent*> averageparam(const int a, const int b)
{
list<CStudent*> l;
vector<CStudent>::iterator itt;
for (itt=students.begin();itt!=students.end();itt++)
if((*itt).average() >= a && (*itt).average() <= b)
l.push_back(*itt);
return l;
}
这是我在线收到的错误 l.push_back(*itt)
no matching function for call to 'std::list<CStudent*>::push_back(CStudent&)'".
如果我没记错的话,我需要在主函数中调用打印方法(*it)->print()
,但我不知道如何将向量中的对象插入到列表中指针。
这里是调用这个方法的main函数中的代码。
list<CStudent*> l;
a=50, b=60;
for (it=uni.begin();it!=uni.end();it++)
{
l = (*it).averageparam(a,b);
if (l.empty())
cout<<"There are no students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl<<endl;
else
{
cout<<"Students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl;
list<CStudent>::iterator it=l.begin();
for (it=l.begin();it!=l.end();it++)
(*it).print();
cout<<endl;
}
}
这一行:
l.push_back(*itt);
是传一个CStudent&
,而l
只传一个CStudent*
。将该行更改为
l.push_back(&*itt);
将改为传递存储的 CStudent
项的地址(指针)。
我正在尝试将对象从向量推回指针列表。不幸的是,我的方法不能正常工作。
list<CStudent*> averageparam(const int a, const int b)
{
list<CStudent*> l;
vector<CStudent>::iterator itt;
for (itt=students.begin();itt!=students.end();itt++)
if((*itt).average() >= a && (*itt).average() <= b)
l.push_back(*itt);
return l;
}
这是我在线收到的错误 l.push_back(*itt)
no matching function for call to 'std::list<CStudent*>::push_back(CStudent&)'".
如果我没记错的话,我需要在主函数中调用打印方法(*it)->print()
,但我不知道如何将向量中的对象插入到列表中指针。
这里是调用这个方法的main函数中的代码。
list<CStudent*> l;
a=50, b=60;
for (it=uni.begin();it!=uni.end();it++)
{
l = (*it).averageparam(a,b);
if (l.empty())
cout<<"There are no students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl<<endl;
else
{
cout<<"Students in spec."<<(*it).getspec()<<" course "<<(*it).getkurs()<<" group "<<(*it).getgrupa()<<" with average amount of points between "<<a<<" - "<<b<<endl;
list<CStudent>::iterator it=l.begin();
for (it=l.begin();it!=l.end();it++)
(*it).print();
cout<<endl;
}
}
这一行:
l.push_back(*itt);
是传一个CStudent&
,而l
只传一个CStudent*
。将该行更改为
l.push_back(&*itt);
将改为传递存储的 CStudent
项的地址(指针)。