没有操作员"=="处理这些操作数
No operator "==" maches these operands
所以我尝试将我从>它获得的迭代器值与 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;
}
}
}
在 if 语句中我得到错误,但我比较两个整数不是吗?作为 gradeComp 和 it->second 传递的 int。
错误是:
严重性代码说明项目文件行抑制状态 错误 C2678 二进制"==":找不到需要左手的运算符 类型为"const std::vector>"的操作数(或那里 是不可接受的转换(
如何解决错误?我找到了仅使用迭代器获取值键的示例。
我比较两个整数不是吗?
不,你没有。看:
it->second == gradeComp
由于it
是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])
{ /* ... */ }
相关文章:
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 控制允许动态运行c++的并发操作数
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 用于矢量处理的多个线程
- 对字符串进行排序时,在c++中处理sort()
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 没有操作员"=="处理这些操作数
- c++后缀计算器不能处理一行中的两个操作数