gpt4 book ai didi

c++ - 二进制 '==' : no operator found which takes a left - hand operand of type 'std::pair'

转载 作者:太空宇宙 更新时间:2023-11-04 15:57:27 24 4
gpt4 key购买 nike

这个错误很常见,但我见过的解决方案都不适合我。

我看到的解决方案是使用其他类型的操作数而不是对,但这不应该成为借口。

我在错误中的理解是我没有用对定义相等运算符,但我没有在任何时候比较对,我总是使用键或值。

#include "cabezeras.h"

using namespace std;

int main()
{
string x;
ifstream inFile;
bool t2, t3;
int times2 = 0, times3 = 0;
map<char, int> mymap;
map<char, int>::iterator it;
pair<char, int> aux_pair;

inFile.open("C:/Users/victor/source/repos/AdventOfCode2018/Day2/input.txt");
if (!inFile) {
cout << "Unable to open file";
exit(1);
}
while (getline(inFile, x)) {
t2 = false, t3 = false;
mymap.clear();

for (int i = 0; i < x.length(); i++) {
it = find(mymap.begin(), mymap.end(), x[i]);
if (it == mymap.end()) {
aux_pair = make_pair(x[i], 1);
mymap.insert(aux_pair);
}
else {
it->second++;
}
}

it = mymap.begin();
int valor;
while (it != mymap.end()) {
if (valor == 2) {
t2 = true;
}

if (valor == 3) {
t3 = true;
}

it++;
}

if (t2) {
times2++;
}
if (t3) {
times3++;
}
}

inFile.close();

cout << "Val = " << times2 * times3 << endl;
}

调试时(它带我到 xutility 文件):

template<class _InIt, class _Ty> inline
_InIt _Find_unchecked1(_InIt _First, const _InIt _Last, const _Ty& _Val, false_type)
{ // find first matching _Val
for (; _First != _Last; ++_First)
if (*_First == _Val) // THIS IS THE LINE OF THE ERROR
break;
return (_First);
}

最佳答案

你应该使用 std::map::find 而不是 std::find,所以替换它

it = find(mymap.begin(), mymap.end(), x[i]);

it = mymap.find(x[i]);

关于c++ - 二进制 '==' : no operator found which takes a left - hand operand of type 'std::pair<const _Kty,_Ty>' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53615522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com