刷CCS-CSP的时候碰到字符串全部转小写的问题,下面给出了它的实现
transform(s.begin(), s.end(), s.begin(),
[](unsigned char c){ return tolower(c); });
这里第四个参数接收一个函数指针,写lamda表达式是对的,下面这样写也是对的
transform(s.begin(), s.end(), s.begin(),::tolower);
但是这么写就是错的
transform(s.begin(), s.end(), s.begin(),std::tolower)
::lower引用的是<cctype>头文件中的,是全局命名空间中的,而std::lower是std命名空间的,也不是个函数指针。所以在这里就是错误的。