当前位置:  开发笔记 > 编程语言 > 正文

关于map :: erase和map :: count

如何解决《关于map::erase和map::count》经验,为你挑选了1个好方法。

我只是对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打开文件的这种用法.任何和所有的建议都提前非常感谢!



1> Fred Larson..:

不,没有理由在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);
}

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有