所以我尝试比较我从它得到的迭代器值 - >第二个用int来从值的基础上从map获取键.我有这个代码:
std::map<string, std::vector<int> >::const_iterator it;
void getStudentByGrade(int gradeComp)
{
for (it = studMap.begin(); it != studMap.end(); it++)
{
if (it->second == gradeComp)
{
cout << it->first;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在if语句中我得到错误,但我比较两个整数不是吗?作为gradeComp传递的int和it-> second.
错误是:
严重级代码描述项目文件行抑制状态错误C2678二进制'==':找不到运算符,它接受类型为'const std :: vector>'的左操作数(或者没有可接受的转换)
如何解决错误?我找到了仅使用迭代器获取key值的示例.
我比较两个整数不是吗?
你不可以.看:
it->second == gradeComp
Run Code Online (Sandbox Code Playgroud)
因为it是(const)迭代器std::map<string, std::vector<int>>,it->second有类型std::vector<int> const&.另一方面,gradeComp是一个int.这就是你的编译器告诉你的原因
没有运算符"=="匹配这些操作数
那些操作数是整数和整数的向量.
如何解决错误?
嗯,这取决于你的意思.你的意思是在向量中搜索 gradeComp?或者你的意思是将它与矢量中的特定值进行比较?
// is gradeComp contained in the found vector?
if (end(it->second) != std::find(begin(it->second), end(it->second), gradeComp))
{ /* ... */ }
// does gradeComp match n-th value of vector?
if (gradeComp == it->second[n])
{ /* ... */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |