Целочисленное векторное сравнение элементов с использованием оператора нижнего индекса завершается неудачно, но успешно при использовании функции at - PullRequest
0 голосов
/ 29 февраля 2012

Я пишу функцию обратного вызова, которая имеет ссылку на вектор int, переданный ей в структуре.Когда я пытаюсь получить доступ к элементу в векторе, используя подстрочный оператор [], Intellisense указывает, что == не может сравнивать два элемента, в частности, ошибка C2678: двоичный файл "==": не найден оператор, который принимает левый операндтипа 'std :: vector <_Ty>' (или нет приемлемого преобразования).Но при использовании функции at () проблем не возникает.

//body of call back function
searchInfo* argVal = (searchInfo*) Parameter;
for(int i = argVal->inclStartPos; i < argVal->exclEndPos; ++i){
    if(argVal->numVector[i] == argVal->searchNum)//problem here
        argVal->result = true;
//this is the structure passed through pointer

struct searchInfo{
int inclStartPos;
int exclEndPos;
vector<int>* numVector; 
int searchNum;
bool result;
};

Поскольку оператор [] и функция at () вектора работают почти (различие здесь не имеет значения) одинаково,почему ошибка?

1 Ответ

6 голосов
/ 29 февраля 2012

На самом деле вы сравниваете вектор с int, так как поле numVector имеет тип

vector<int>*

Проще говоря, вы объявили массив векторов.Оператор [] вернет значение типа vector.

Возможно, вы ошиблись в объявлении.Может быть, вы хотели объявить numVector следующим образом:

vector<int> numVector;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...