我有
using namespace std;
vector<char> tmp;
tmp.push_back(val);
...
现在我尝试
transform(tmp.begin(), tmp.end(), tmp.begin(), std::tolower);
无法编译,但这会编译:
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
std::tolower
有什么问题?它适用于一个参数,例如std::tolower(56)
编译。谢谢!
答案 0 :(得分:3)
std::tolower
有两个重载,无法解析C版UnaryOperation
没有的::tolower
。
如果您想使用std::tolower
,可以使用lambda作为
transform(tmp.begin(), tmp.end(), tmp.begin(), [](unsigned char c) {return std::tolower(c); });