5

オンラインで入手できるいくつかの例では、等値演算子を使用して 2 つの 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 ベクトルを比較するこれら 2 つの方法の違いは何ですか?

4

2 に答える 2

8

この 2 つはまったく同じように動作します。コンテナー要件 (表 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 に答える