在线可用的示例很少使用等于运算符来比较两个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;
相反,我读了其他使用std::equal()
函数的例子。
bool compare_vector(const vector<T>& v1, const vector<T>& v2)
{
return v1.size() == v2.size()
&& std::equal(v1.begin(), v1.end(), v2.begin());
}
这两种比较STL载体的方法有什么区别?
答案 0 :(得分:8)
两者表现完全相同。容器要求(表96)表明a == b
具有以下操作语义:
distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
equal(a.begin(), a.end(), b.begin())
答案 1 :(得分:5)
好问题。我怀疑人们不使用==
,因为他们不知道它在那里,但它确实与手动编码版本完全相同。它始终存在于序列容器和关联容器中。