我尝试运行此代码,即使认为两个向量的内容不同且大小不同,结果仍然显示“是”。我不明白比较运算符如何处理向量
#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;
}
预期输出为“否” 但是收到的输出是“是”
答案 0 :(得分:8)
在这里,您将从example
中删除所有元素:
if(!example.empty())
{
example.clear();
}
因此,第一个向量在此时为空。然后,创建another_vector
,默认为空。现在,
another_vector.push_back(10);
example.push_back(10);
这时,两个向量都恰好包含一个元素:10
。 operator ==
会执行应做的工作。