设置容器对象
Set container object
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
。
相关文章:
- 如何在自删除后将对象设置为nullptr
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- std::用派生类对象设置,但用gcc8.1设置基类比较器
- 如何在 gdb 中的所有构造函数上同时为 C++ 对象设置断点?
- 如何将C++ time_t对象设置为纪元?
- 使用PYBIND11,如何为Array_t对象设置基础内存的所有权
- 如何使用基类对象设置派生类变量的值
- C 不能将对象设置为方法的返回对象
- 一旦对象设置为 null,用于声明对象的堆大小的变量就设置为 null?
- 无法在openGL和GLUT中为我想要的确切对象设置动画
- 如何将2D向量中的对象设置为空指针[C ]
- 如何用类别的consumetrized构造函数声明使用类的比较对象设置的STL设置
- 为什么重载运算符不将主对象设置为值集
- 如何在 OpenGL 中为 3D 对象设置原点
- C++是否可以将fstream对象设置为在每次调用<<
- 如何从C#将对象设置为C++
- 哪个更好?如果子对象是类的成员,则为子对象设置父对象
- c++无法为包含静态变量的对象设置NULL指针
- 将数组中的对象设置为新对象
- 在OpenGL中为不同的对象设置单独的材质属性