5

很少有在线可用的示例使用相等运算符来比较两个 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 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 向量的方法有什么区别?

4

2 回答 2

8

两者的行为方式完全相同。容器要求(表 96)说a == b具有以下操作语义:

distance(a.begin(), a.end()) == distance(b.begin(), b.end()) &&
equal(a.begin(), a.end(), b.begin())
于 2013-03-06T23:11:56.190 回答
5

好问题。我怀疑人们不使用==它是因为他们不知道它在那里,但它确实与手动编码版本一样。它一直存在于序列容器和关联容器中。

于 2013-03-06T23:12:08.573 回答