我只是对map :: count()和map :: erase()的使用有一个简单的问题.我使用这些与std :: string,但想知道我是否需要使用string :: c_str().例如,我的代码当前显示为:
void Person::removeFriend(std::string first, std::string last){ std::string name = (first + last); //checks to ensure the friend exists in the user's friend list if (_friends.count(name) == 1){ _friends.erase(name); } }
所以我的问题是,如果它实际上显示为:
void Person::removeFriend(std::string first, std::string last){ std::string name = (first + last); //checks to ensure the friend exists in the user's friend list if (_friends.count(name.c_str()) == 1){ _friends.erase(name.c_str()); } }
另外,我想这也适用于map :: insert().我只知道使用std :: string打开文件的这种用法.任何和所有的建议都提前非常感谢!
不,没有理由在c_str
这里使用.在使用之前,您无需检查是否存在erase
.你的功能可能就是这样:
void Person::removeFriend(const std::string& first, const std::string& last){ std::string name = (first + last); _friends.erase(name); }
... 甚至:
void Person::removeFriend(const std::string& first, const std::string& last){ _friends.erase(first + last); }