设置容器对象

Set container object

本文关键字:对象 设置      更新时间:2023-10-16
class CallerId{
private:
    string name;
    int* number;
public:
       .
       .
}

我有这个类,我希望将该类型的对象放在一个按升序和降序排列的集合容器中(基于字符串名称(。有什么可能的方法吗?

如果你喜欢使用std::set你必须实现operator <...

#include <set>
class CallerId{
private:
    std::string name;
    int* number;
public:
    CallerId( std::string na, int* nu=nullptr) : name(na), number(nu) {}
    bool operator <( const CallerId &src) const { return name < src.name; }
};
std::set<CallerId> callIdSet;
callIdSet.insert( CallerId( "a" ) );
callIdSet.insert( CallerId( "b" ) );

。另一种方法是使用std::map CallerId::name是您的关键......

#include <map>
class CallerId{
private:
    std::string name;
    int* number;
public:
    CallerId( std::string na, int* nu=nullptr) : name(na), number(nu) {}
    const std::string& Name() const { return name; }
};
CallerId ida("a");
CallerId idb("b");
std::map<std::string,CallerId> callIdMap;
callIdMap.emplace( ida.Name(), ida );
callIdMap.emplace( idb.Name(), idb );

当然,创建一个std::list<CallerId>并使用排序成员函数对其进行排序。

你为自己定义了一个函数来比较该类的两个对象并将其传递给sort