#include <cctype>
bool case_insensitive_cmp(char lhs, char rhs)
{
return std::toupper(lhs) < std::toupper(rhs);
}
#include <algorithm>
#include <string>
bool case_insensitive_string_cmp(const std::string& lhs,
const std::string& rhs)
{
return std::lexicographical_compare(lhs.begin(),
lhs.end(),
rhs.begin(),
rhs.end(),
case_insensitive_cmp);
}
#include <map>
#include <iostream>
int main()
{
std::map<std::string,
std::string,
bool(*)(const std::string&, const std::string&)>
my_map(case_insensitive_string_cmp);
my_map["Helloooo"] = "foo";
my_map["HELLOOOO"] = "bar";
std::cout << my_map["hellOOOO"] << std::endl;
}
I2luY2x1ZGUgPGNjdHlwZT4KYm9vbCBjYXNlX2luc2Vuc2l0aXZlX2NtcChjaGFyIGxocywgY2hhciByaHMpCnsKICAgIHJldHVybiBzdGQ6OnRvdXBwZXIobGhzKSA8IHN0ZDo6dG91cHBlcihyaHMpOwp9CgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgpib29sIGNhc2VfaW5zZW5zaXRpdmVfc3RyaW5nX2NtcChjb25zdCBzdGQ6OnN0cmluZyYgbGhzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHJocykKewogIHJldHVybiBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKGxocy5iZWdpbigpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaHMuZW5kKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmhzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmhzLmVuZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VfaW5zZW5zaXRpdmVfY21wKTsKfQoKI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7CiAgc3RkOjptYXA8c3RkOjpzdHJpbmcsCiAgICAgICAgICAgc3RkOjpzdHJpbmcsCiAgICAgICAgICAgYm9vbCgqKShjb25zdCBzdGQ6OnN0cmluZyYsIGNvbnN0IHN0ZDo6c3RyaW5nJik+IAogICAgbXlfbWFwKGNhc2VfaW5zZW5zaXRpdmVfc3RyaW5nX2NtcCk7CgogIG15X21hcFsiSGVsbG9vb28iXSA9ICJmb28iOwogIG15X21hcFsiSEVMTE9PT08iXSA9ICJiYXIiOwogIHN0ZDo6Y291dCA8PCBteV9tYXBbImhlbGxPT09PIl0gPDwgc3RkOjplbmRsOwp9Cg==