[英]What is the difference between these two ways to compare STL vectors?
Few examples available online use the equality operator to compare the contents of two STL vector
objects in order to verify that they have the same content. 在线可用的示例很少使用等于运算符来比较两个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;
Instead, I read other examples where the std::equal()
function is used. 相反,我读了其他使用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());
}
What is the difference between these two ways to compare STL vectors? 这两种比较STL载体的方法有什么区别?
The two behave in exactly the same way. 两者表现完全相同。 The container requirements (Table 96) say that a == b
has the operational semantics of: 容器要求(表96)表示a == b
具有以下操作语义:
distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
equal(a.begin(), a.end(), b.begin())
Good question. 好问题。 I suspect that people don't use ==
because they don't know its there, but it does exactly what the hand-coded version does. 我怀疑人们不使用==
因为他们不知道它在那里,但它确实与手动编码版本完全相同。 It's always been there for sequence containers and for associative containers. 它始终存在于序列容器和关联容器中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.