如何使 std::map::find 函数区分大小写?

Jay*_*esh 1 c++ stdmap std find c++11

我面试过一家跨国公司。他给了我以下代码并要求我使find()函数区分大小写。我尝试过,但无法理解如何使内置查找函数区分大小写。有没有办法使其区分大小写以仅查找特定的键值?

#include <iostream>
#include <map>
using namespace std;

int main()
{
    map<string, int> mp;
    mp["Test"] = 1;
    mp["test"] = 2;
    mp["TEST"] = 3;
    mp["tesT"] = 4;    

    for (auto it = mp.find("TEST"); it != mp.end(); it++)
    {
        cout << it->first << " " << it->second << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出 :

TEST 3
Test 1
tesT 4
test 2
Run Code Online (Sandbox Code Playgroud)

但我期望输出是:

TEST 3
Run Code Online (Sandbox Code Playgroud)

JeJ*_*eJo 6

问题出在for循环上。您无需遍历地图即可打印它。相反你需要做

auto it = mp.find("TEST");
if (it != mp.end())
    std::cout << it->first << " " << it->second << std::endl;
Run Code Online (Sandbox Code Playgroud)

它将std::map::find找到一个指向键值对的迭代器,该键值对的键恰好是"TEST",如果没有找到,则仅找到结束迭代器。