C++11 包装std::映射并提供指向元素的指针
我正在使用一个提供函数C++11 包装std::映射并提供指向元素的指针,c++11,dictionary,iterator,C++11,Dictionary,Iterator,我正在使用一个提供函数foo(Widget*)的库 我的小部件存储在 struct WidgetManager { std::map<int, Widget> dict; ??? getWidget(int id); } struct-WidgetManager{ std::map dict; ??getWidget(内部id); } 最初,我将(原始)小部件指针存储在std::map中,只是因为可以方便地将它们传递给foo。 如果我想在地图中存储实际的小部件,那么
foo(Widget*)
的库
我的小部件存储在
struct WidgetManager {
std::map<int, Widget> dict;
??? getWidget(int id);
}
struct-WidgetManager{
std::map dict;
??getWidget(内部id);
}
最初,我将(原始)小部件指针存储在std::map
中,只是因为可以方便地将它们传递给foo。
如果我想在地图中存储实际的小部件,那么getWidget
的返回类型应该是什么,以便我可以将小部件的指针传递给foo
我被迫将其设置为迭代器类型,但我不喜欢必须访问
itr->second
才能获取小部件(指针)。在将小部件传递给foo(小部件*)
函数以获取指向它的指针之前,可以使用&
struct WidgetManager {
std::map<int, Widget> dict;
Widget& getWidget(int id);
}
WidgetManager wm;
//...
Widget& w = wm.getWidget(id);
foo(&w);
//...