C ++ Map,其值为指针

时间:2015-12-16 00:12:01

标签: c++ c++11 dictionary

如果我有std::map<std::string, Person>类型的地图,其中Person是我定义的类,以下是我在迭代器Person访问it的方法:

it->second;

但是,如果地图的类型为std::map<std::string, Person*>,那么该元素将是指向Person的指针,而不是实际的Person。那我如何访问Person?例如,这是正确的:

*it->second;

或是这样:

it->*second;

谢谢!

2 个答案:

答案 0 :(得分:2)

例如,你大多数可能会访问it->second->name。但*(it->second)是正确的(我认为你不需要(),不记得;检查运算符优先级。)

答案 1 :(得分:0)

Person const & person = *it->second;
std::cout << person.name << std::endl;
std::cout << person.address << std::endl;
//etc

或者只是

std::cout << it->second->name << std::endl;
std::cout << it->second->address << std::endl;