Почему оператор сравнения "==" возвращает "YES", хотя два вектора различны? - PullRequest
0 голосов
/ 26 марта 2019

Я попытался запустить этот код, и результат показывает «Да», хотя мысль о том, что два вектора имеют разное содержимое и имеют разные размеры.Я не понял, как оператор сравнения работает с векторами

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector <int> example;  //First vector definition
    example.push_back(3);
    example.push_back(10);
    example.push_back(33);
    for(int x=0;x<example.size();x++)
    {
        cout<<example[x]<<" ";
    }
    if(!example.empty())
    {
        example.clear();
    }
    vector <int> another_vector; //Second vector definition
    another_vector.push_back(10);
    example.push_back(10);
    if(example==another_vector) //Comparison between the two vector
    {
        cout<<endl<<"YES";
    }
    else
    {
        cout<<endl<<"NO";
    }
    return 0;
}

Ожидаемый вывод - «Нет», но полученный вывод - «Да»

1 Ответ

8 голосов
/ 26 марта 2019

Здесь вы удаляете все элементы из example:

if(!example.empty())
{
    example.clear();
}

Следовательно, первый вектор в этой точке пуст. Затем вы создаете another_vector, который будет пустым по умолчанию. Теперь,

another_vector.push_back(10);
example.push_back(10);

На данный момент оба вектора содержат ровно один элемент: 10. operator == делает то, что должен делать.

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