vector::operator==
Ilustra como usar o vector::operator = = função de biblioteca STL (Standard Template) no Visual C++.
template<class _TYPE, class _A> inline
bool operator==(
const vector<_TYPE, _A>& _X,
const vector<_TYPE, _A>& _Y
);
Comentários
Observação |
---|
Nomes de classe/parâmetro o protótipo não coincidem com a versão no arquivo de cabeçalho.Alguns foram modificados para melhorar a legibilidade. |
O exemplo declara três vetores vazias de uma classe definida pelo usuário chamado ID, cada um deles contém um membro da cadeia de caracteres de nome e um membro de pontuação inteiro.Ele cria três vetores de IDs e então compara vetores usando o operator== conforme definido para identificação.
Exemplo
// 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;
}
Requisitos
Cabeçalho: <vector>