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

清泛原创
代码如下:
#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

分享到:
评论加载中,请稍后...
创APP如搭积木 - 创意无限,梦想即时!
回到顶部