Я получаю ошибку "нет совпадения для оператора == in__first.
Вот код:
заголовочный файл:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
struct rankingElement {
string url;
int rank;
};
class RankingCreator {
public:
static const int MAX_QUERY_SIZE = 20;
RankingCreator();
virtual ~RankingCreator();
bool checkPageRank(rankingElement rElement, vector<rankingElement> ranking);
void insertIntoRanking(rankingElement rElement);
};
И исходный файл:
#include "RankingCreator.h"
bool RankingCreator::checkPageRank(rankingElement rElement,
vector<rankingElement> ranking)
{
if (ranking.size() < MAX_QUERY_SIZE) {
// enough space for another page in ranking
return true;
} else {
if (find(ranking.begin(), ranking.end(), rElement.url) != ranking.end()) {
// url is already in ranking
return false;
} else {
}
}
return true;
}
Я попытался прокомментировать некоторые блоки кода в исходном файле, и строка с функцией find (), похоже, выдает ошибки. Это функция из алгоритма класса, используемая для проверки того, содержит ли вектор определенный элемент. Я обнаружил, что это неправильно, потому что я пытаюсь сравнить struct со строкой в функции find. Я могу справиться с этим, скопировав URL из ранжирования в другой вектор строки, а затем использовать этот вектор строк в функции поиска, но когда я попытался это сделать, я не могу получить доступ к элементам в векторе 'ранжирование' - например, ранжированию .url не работает, и я не знаю почему .. и помощь будет принята.