hov*_*ovo 7 c++ stl std stl-algorithm
我有
using namespace std;
vector<char> tmp;
tmp.push_back(val);
...
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试
transform(tmp.begin(), tmp.end(), tmp.begin(), std::tolower);
Run Code Online (Sandbox Code Playgroud)
它无法编译,但这编译:
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
Run Code Online (Sandbox Code Playgroud)
有什么问题std::tolower?它适用于一个参数,例如std::tolower(56)编译.谢谢!
std::tolower有两个重载,并且无法解决UnaryOperationC 版本::tolower没有的问题。
如果你想使用std::tolower你可以使用 lambda 作为
transform(tmp.begin(), tmp.end(), tmp.begin(), [](unsigned char c) {return std::tolower(c); });
Run Code Online (Sandbox Code Playgroud)