【发布时间】:2020-12-18 12:50:02
【问题描述】:
以下函数必须在向量 allSportsmen 中按全名和出生日期找到运动员,然后按名称查找某项运动,并从向量中添加该运动员和该运动以映射参与者,其中键是运动员,值是运动他会的
vector<Sportsman> allSportsmen;
vector<Sport> allSports;
map<Sportsman, vector<Sport>> participants;
void addSportToSportsman(string fullName, string birthDate, string sportName) {
Sportsman* s;
Sport* sport;
for (auto x = allSportsmen.begin(); x != allSportsmen.end(); x++) {
if (x->getFullName() == fullName && x->getBirthDate() == birthDate)
{
for (auto y = allSports.begin(); y != allSports.end(); y++) {
if (y->getSportName() == sportName)
{
s = allSportsmen.at(x);
sport = allSports.at(y);
participants[s].push_back(sport);
}
}
}
}
}
在行:
s = allSportsmen.at(x);
sport = allSports.at(y);
我有错误:
C++ 没有重载函数实例匹配参数列表参数类型是: (std::_Vector_iterator<:_vector_val std::_simple_types std::_vec_iter_types size_t ptrdiff_t sportsman const>>>>) 对象类型为:std::vector
运动也是如此
然后:
编译器错误 C2679 二进制 '[' : 未找到采用 'std::_Vector_iteratorstd::_Vector_val<:_simple_types>>' 类型的右侧操作数的运算符(或没有可接受的转换)
如何解决此问题并正常传递存储在其向量中的运动员和运动?顺便说一句,这个地图是否应该接收像 map<Sportsman*, vector<Sport>*> participants;这样的指针
【问题讨论】:
标签: c++ pointers stdvector stdmap