这是一个简单的问题,但对于搜索引擎来说很难表述:如果我创建了一个指向map对象的指针,如何访问和设置它的元素?以下代码不起作用。
map<string, int> *myFruit;
myFruit["apple"] = 1;
myFruit["pear"] = 2;
这是一个简单的问题,但对于搜索引擎来说很难表述:如果我创建了一个指向map对象的指针,如何访问和设置它的元素?以下代码不起作用。
map<string, int> *myFruit;
myFruit["apple"] = 1;
myFruit["pear"] = 2;
你可以这样做:
(*myFruit)["apple"] = 1;
或者myFruit->operator[]("apple") = 1;
或者map<string, int> &tFruit = *myFruit;
tFruit["apple"] = 1;
或者(C++11)
myFruit->at("apple") = 1;
myFruit
是一个指向map的指针。如果你去掉星号,那么你将得到一个map,并且你后面的语法也会生效。
另外,你可以使用解引用运算符(*
)来访问指针所指向的map,但是你必须先创建你的map:
map<string, int>* myFruit = new map<string, int>() ;
map<string, int> *myFruit;
(*myFruit)["apple"] = 1;
(*myFruit)["pear"] = 2;
如果您需要将其保留为指针,则会起作用。
myFruit
是一个已经存在的指向map<string, int>
的指针,它可能已经在堆上分配了空间,也可能没有。 - Greg Hewgillptr->at("apple")
。 - PlasmaHH