如何从指针访问C++映射的元素?

25 c++

简单的问题,但很难为搜索引擎制定:如果我创建一个指向地图对象的指针,我如何访问和设置其元素?以下代码不起作用.

map<string, int> *myFruit;
myFruit["apple"] = 1;
myFruit["pear"] = 2;
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 68

你可以这样做:

(*myFruit)["apple"] = 1;
Run Code Online (Sandbox Code Playgroud)

要么

myFruit->operator[]("apple") = 1;
Run Code Online (Sandbox Code Playgroud)

要么

map<string, int> &tFruit = *myFruit;
tFruit["apple"] = 1;
Run Code Online (Sandbox Code Playgroud)

  • 不管你是否想要那些额外的语义,C++ 11提供了一个check at()函数,你可以用它作为`ptr-> at("apple")` (3认同)

swo*_*ngu 5

myFruit是指向地图的指针.如果你删除星号,那么你将有一个地图,你的语法将起作用.

或者,您可以使用解除引用运算符(*)来使用指针访问地图,但您必须先创建地图:

map<string, int>* myFruit = new map<string, int>() ;
Run Code Online (Sandbox Code Playgroud)

  • 这有点没有抓住重点。他已经知道他无法访问这些元素,但他有一个指针,并且它已经被分配了。 (2认同)