在C 中的地图中访问对象的成员功能
Accessing Member Functions of Objects in a Map in C++
从我的理解中,如果我在以下任何一个上错了,请纠正我,可以使用容器来存储对象。地图是一个关联容器,它将对象存储为"元素"。
如果是这样,我如何访问这些对象的成员函数(例如设置器和getters),例如我在没有地图设置参数的情况下创建对象时的操作方式?
或以其他方式放置,我该如何做:
someClass someObject;
someObject.setSomething(InputVari);
地图?
您需要使用[]运算符。
myMap[myIndex].setVariable(aValue);
例如,如果您想创建具有钥匙字符的班级人员的地图看起来像以下内容。
std::map<char, Person> myMap;
Person myPerlmaoooosonOne("Phill", "Collins", "England");
myMap['A'] = myPersonOne;
myMap['A'].setNewLocation("New York")
如果我在以下任何一个上错了,请纠正我,使用容器来存储对象
不一定。在某些情况下,将存储对象的指针存储是可取的,例如当对象很大时,因此对象的副本很昂贵。另一种情况是当对象是多态性的时,您想将不同派生类的对象存储在容器中。存储指针可防止对象切片。
访问对象的成员:
class Foo{ int A; void bar(){} };
map<string, Foo*> myMap;
auto it = myMap.find("keyToObject");
if(it != myMap.end()) {
it->A += 1; it->bar();
}
您需要是在将[]
与std::map
一起使用时,您需要几乎要小心,考虑到事实,[]
不仅仅是insert()
的方便符号。myMap[k]
的结果等效于(∗(myMap.insert(make_pair(k,V{})).first)).second
的结果,其中V
是映射类型。
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- 如何避免大多数成员功能相同的代码重复
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- C 函数调用包装器包含类成员功能作为模板参数
- 创建类成员功能
- 成员功能C 的不同实现
- 返回类型不可知模板类成员功能
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 超载类成员功能标记为const
- C 功能指针和成员功能指针
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 我可以使用Priority_queue的基础容器的成员功能
- 如何子类可运行任何成员功能
- 共享类时如何隐藏成员功能文件
- 从C文件访问C 类成员功能