还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

stl 字符串std::string作为std::map主键key的实例

来源:清泛原创     2016-05-20 15:49:29    人气:     我有话说( 0 人参与)

本文通过一个实例介绍std::map字符串作为key的常见用法,并使用find_if实现map按value值查找。

代码如下:
#include <map>
#include <string>
#include <algorithm>
using namespace std;

class map_value_finder
{
public:
    map_value_finder(const std::string &cmp_string):m_s_cmp_string(cmp_string){}
    bool operator ()(const std::map<std::string, std::string>::value_type &pair)
    {
        return pair.second == m_s_cmp_string;
    }
private:
    const std::string &m_s_cmp_string;
};

int main()
{
    std::map<std::string, std::string> my_map;
    my_map.insert(std::make_pair("10", "china"));
    my_map.insert(std::make_pair("20", "usa"));
    my_map.insert(std::make_pair("30", "english"));
    my_map.insert(std::make_pair("40", "hongkong"));

    //通过key查找
    std::map<string, std::string>::iterator it = my_map.find("10");
    if (it == my_map.end())
       printf("not found\n");       
    else
        printf("found key:%s value:%s\n", it->first.c_str(), it->second.c_str());

    //通过value查找
    it = std::find_if(my_map.begin(), my_map.end(), map_value_finder("english"));
    if (it == my_map.end())
       printf("not found\n");       
    else
        printf("found key:%s value:%s\n", it->first.c_str(), it->second.c_str());
       
    return 0;
}

运行结果:


stl map

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: