指向地图的指针

14 c++ pointers

如果我定义一个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],但您可能不会使用->语法.)

  • 你可以使用`a-&gt;operator[](b)`,但这有点难看;) (2认同)

iam*_*ind 5

除了您必须->用于访问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)