如果我定义一个map像这样的指针:
map<int, string>* mappings;
Run Code Online (Sandbox Code Playgroud)
mappings是一个指针.我应该如何使用此指针来操作地图?
Lig*_*ica 17
像使用任何其他指针一样使用指针:取消引用它以到达它指向的对象.
typedef std::map<int, string>::iterator it_t;
it_t it1 = mappings->begin(); // (1)
it_t it2 = (*mappings).begin(); // (2)
string str = (*mappings)[0]; // (3)
Run Code Online (Sandbox Code Playgroud)
请记住a->b- 大多数 - 相当于(*a).b,然后玩得开心!
(虽然这种等效性不适用于索引访问(*a)[b],但您可能不会使用->语法.)
除了您必须->用于访问map成员之外,没有太大区别。IE
mapping->begin() or mapping->end()
Run Code Online (Sandbox Code Playgroud)
如果您对此感到不舒服,那么您可以为其分配一个引用并以自然的方式使用它:
map<int, string> &myMap = *mappings; // 'myMap' works as an alias
^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
用myMap你一般使用它。IE
myMap[2] = "2";
myMap.begin() or myMap.end();
Run Code Online (Sandbox Code Playgroud)