ont*_*cks 5 c++ class map find
我有两个选项来创建一个std地图.我可以使用两种类型的地图.
1. std::map<A, std::string>
2. std::map<A*, std::string>
Run Code Online (Sandbox Code Playgroud)
哪个A
是类对象
稍后在代码中我将不得不执行查找操作.
1. std::map<A, std::string> myMap1;
if(myMap1.find(A_obj) != myMap1.end())
{
}
2. std::map<A*, std::string> myMap2;
if(myMap2.find(A_obj_ptr) != myMap2.end())
{
}
Run Code Online (Sandbox Code Playgroud)
我想知道建议创建哪一个.在这两个中的哪一个中,我不必重载类中的任何运算符以A
使查找操作起作用.当任何运算符没有过载时,哪些在插入操作上会出现问题.
如果有帮助,这是A类
class A
{
private:
std::vector<std::string> m_member;
public:
A(std::vector<std::string> input);
};
Run Code Online (Sandbox Code Playgroud)
请注意,如果A
实例是单例,则这两个样本仅在功能上等效.否则,两个A
值相等但地址不同的值很可能.这将导致不同的语义.
我个人更喜欢这个std::map<A, std::string>
版本,因为它的语义非常清晰.键具有相等的语义,并且没有潜在的悬空或nullptr
值.该std::map<A*, std::string>
版本为开发人员查看代码提供了大量问题
A
单身的所有实例吗?如果不是,我如何确保A
我正在寻找的A*
是存储的价值? 归档时间: |
|
查看次数: |
3635 次 |
最近记录: |