C++ 这两种比较STL向量的方法有什么不同?

C++ 这两种比较STL向量的方法有什么不同?,c++,std,C++,Std,很少有在线示例使用相等运算符来比较两个STLvector对象的内容,以验证它们是否具有相同的内容 vector<T> v1; // add some elements to v1 vector<T> v2; // add some elements to v2 if (v1 == v2) cout << "v1 and v2 have the same content" << endl; else cout << "v1 and v

很少有在线示例使用相等运算符来比较两个STL
vector
对象的内容,以验证它们是否具有相同的内容

vector<T> v1;
// add some elements to v1

vector<T> v2;
// add some elements to v2

if (v1 == v2) cout << "v1 and v2 have the same content" << endl;
else cout << "v1 and v2 are different" << endl;

这两种比较STL向量的方法有什么区别?

这两种方法的行为完全相同。集装箱要求(表96)说明
a==b
具有以下操作语义:

distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
equal(a.begin(), a.end(), b.begin())

好问题。我怀疑人们不使用
==
,因为他们不知道它在那里,但它确实做了手工编码版本所做的事情。序列容器和关联容器总是这样。

没有区别。Kerrek SB,表96是什么?如何定义相等运算符?那么,为什么不使用size()而不是distance?@RyanGuthrie:“操作语义”。无论如何,所有内容都可能是内联的,
size()
通常被计算为差异。“不要发汗。”AsCDiMAM: C++ 11标准中的第九十六个表,名为“容器需求”。C++中的向量也是这样的。03@Ben-是的,一直都是这样。我在最初的回答中记错了;关联容器也一直具有
=
(和
!=
)功能。
distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
equal(a.begin(), a.end(), b.begin())