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)
问题出在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",如果没有找到,则仅找到结束迭代器。