#include <iostream>
#include <string>
#include<algorithm>
#include<vector>
using namespace std;
struct comp
{
bool operator()( std::string lhs, std::string rhs)
{
std::transform(lhs.begin(), lhs.end(),lhs.begin(), ::tolower);
std::transform(rhs.begin(), rhs.end(),rhs.begin(), ::tolower);
return lhs < rhs;
}
};
int main(){
std::string str;
std::vector<std::string> v{
"This is a test",
"this is a test",
"Cats",
"cats",
"this thing" };
std::sort(v.begin(), v.end() , comp());
for(auto &x: v)
std::cout<<x<<std::endl;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTx2ZWN0b3I+CgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBjb21wCnsKCglib29sIG9wZXJhdG9yKCkoIHN0ZDo6c3RyaW5nIGxocywgc3RkOjpzdHJpbmcgcmhzKQoJewoJCXN0ZDo6dHJhbnNmb3JtKGxocy5iZWdpbigpLCBsaHMuZW5kKCksbGhzLmJlZ2luKCksIDo6dG9sb3dlcik7CgkJc3RkOjp0cmFuc2Zvcm0ocmhzLmJlZ2luKCksIHJocy5lbmQoKSxyaHMuYmVnaW4oKSwgOjp0b2xvd2VyKTsKCQlyZXR1cm4gbGhzIDwgcmhzOwoJfQp9OwoKaW50IG1haW4oKXsKCgpzdGQ6OnN0cmluZyBzdHI7CnN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2ewoiVGhpcyBpcyBhIHRlc3QiLAoidGhpcyBpcyBhIHRlc3QiLAoiQ2F0cyIsCiJjYXRzIiwKInRoaXMgdGhpbmciIH07CgoKCnN0ZDo6c29ydCh2LmJlZ2luKCksIHYuZW5kKCkgLCBjb21wKCkpOwoKZm9yKGF1dG8gJng6IHYpCnN0ZDo6Y291dDw8eDw8c3RkOjplbmRsOwp9Cg==