最近、私の C++ は少し錆びています。あなたの専門家の 1 人が、それ自体が別のクラスであるテンプレート パラメーターを使用して、コンテナー クラスの SORT 述語を定義するのを手伝ってくれませんか。
template <class Element>
class OrderedSequence
// Maintains a sequence of elements in
// ascending order (by "<"), allowing them to be retrieved
// in that order.
{
public:
// Constructors
OrderedSequence();
OrderedSequence(const OrderedSequence<Element>&);
// Destructor
~OrderedSequence(); // destructor
OrderedSequence<Element>& operator= (const OrderedSequence<Element>& ws);
// Get an element from a given location
const Element& get (int k) const;
// Add an element and return the location where it
// was placed.
int add (const Element& w);
bool empty() const {return data.empty();}
unsigned size() const {return data.size();}
// Search for an element, returning the position where found
// Return -1 if not found.
int find (const Element&) const;
void print () const;
bool operator== (const OrderedSequence<Element>&) const;
bool operator< (const OrderedSequence<Element>&) const;
private:
std::vector<Element> data;
};
したがって、このクラスは std::string メンバー変数を持つ STRUCT であるテンプレート パラメーターを受け取ります。
add() メンバー内で : data.push_back() を実行した後、 std::sort(data.begin(), data.end(), sort_xx) を呼び出すことができるように、単純なソート述語を定義したいと思います上記のクラスの機能。
どうすればいいのですか?私は C++ 11 を使用していません。単純な古い C++ を使用しています。
テンプレート パラメーター Element.. は次のように変換されます。
struct AuthorInfo
{
string name;
Author* author;
AuthorInfo (string aname)
: name(aname), author (0)
{}
bool operator< (const AuthorInfo&) const;
bool operator== (const AuthorInfo&) const;
};
bool AuthorInfo::operator< (const AuthorInfo& a) const
{
return name < a.name;
}
bool AuthorInfo::operator== (const AuthorInfo& a) const
{
return name == a.name;
}