次の方法で共有


vector::operator==

Visual C++ で ベクター :: operator== の標準テンプレート ライブラリ関数を使用する方法に (STL) ついて説明します。

template<class _TYPE, class _A> inline
   bool operator==(
   const vector<_TYPE, _A>& _X,
   const vector<_TYPE, _A>& _Y
);

解説

[!メモ]

プロトタイプのクラスやパラメーター名はヘッダー ファイルのバージョンと一致しない。ただし読みやすさが向上するように変更されました。

サンプル名はそれぞれが文字列のメンバーとスコアの整数メンバーを含む ID というユーザー定義のクラスの 3 種類の空のベクターを宣言します。これはID 3 二つのベクターを作成しoperator== を使用して ID に定義されているベクターを比較します

使用例

// Opequal.cpp
// compile with: /EHsc
// Illustrates how to define the operator== to compare vectors.
//
// Functions:
//
//    vector::operator== - Vector equality comparison.
//    vector::push_back - Appends (inserts) an element to the end of a
//                        vector, allocating memory for it if necessary.
//
//////////////////////////////////////////////////////////////////////

// The debugger can't handle symbols more than 255 characters long.
// STL often creates symbols longer than that.
// When symbols are longer than 255 characters, the warning is disabled.
#pragma warning(disable:4786)

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std ;
using namespace std::rel_ops ;

// The ID class is used for team scoring. It holds each player's name
// and score.
class ID
{
public:
    string Name;
    int Score;

    ID() : Name(""), Score(0) {}
    ID(string NewName, int NewScore) : Name(NewName), Score(NewScore) {}
};

// In this example, an ID is equivalent only if both name and score match.
bool operator==(const ID& x, const ID& y)
{
    return (x.Name == y.Name) && (x.Score == y.Score);
}

// IDs will be sorted by Score, not by Name.
bool operator<(const ID& x, const ID& y)
{
    return x.Score < y.Score;
}

// Define a template class for a vector of IDs.
typedef vector<ID> NAMEVECTOR;

int main()
{
    // Declare 3 dynamically allocated vectors of names.
    NAMEVECTOR Vector1, Vector2, Vector3;

    // Create 3 short vectors of names.
    Vector1.push_back(ID("Karen Palmer", 2));
    Vector1.push_back(ID("Ada Campbell", 1));

    Vector2.push_back(ID("John Woloschuk", 3));
    Vector2.push_back(ID("Grady Leno", 2));

    Vector3.push_back(ID("Karen Palmer", 2));
    Vector3.push_back(ID("Ada Campbell", 1));

    // Compare Vector1 to Vector2 and show whether they're equivalent.
    Vector1 == Vector2 ? cout << "Vector1 == Vector2"
                       : cout << "Vector1 != Vector2";
    cout << endl;

    // Compare Vector1 to Vector3 and show whether they're equivalent.
    Vector1 == Vector3 ? cout << "Vector1 == Vector3"
                       : cout << "Vector1 != Vector3";
    cout << endl;
}
  

必要条件

ヘッダー : <vector>

参照

概念

標準テンプレート ライブラリのサンプル