C++ 通过std算法。模板推导
我试图让这个小例子起作用C++ 通过std算法。模板推导,c++,templates,functor,template-argument-deduction,C++,Templates,Functor,Template Argument Deduction,我试图让这个小例子起作用 #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<char> v{'a', 'b', 'c', 'd'}; std::transform(v.begin(), v.end(), v.begin(), std::toupper); std::for_each(v.begin(), v
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<char> v{'a', 'b', 'c', 'd'};
std::transform(v.begin(), v.end(), v.begin(), std::toupper);
std::for_each(v.begin(), v.end(), [](char & c) {
std::cout << c << " ";
});
}
#包括
#包括
#包括
int main(){
向量v{'a','b','c','d'};
std::transform(v.begin()、v.end()、v.begin()、std::toupper);
std::for_each(v.begin()、v.end()、[](char&c){
std::cout对于std::toupper
,有多个重载
模板推导发生在重载选择之前,因此必须是特定的,或者将调用包装在lambda或function对象中
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<char> v{'a', 'b', 'c', 'd'};
// method 1
struct make_upper
{
int operator()(int ch) const { return std::toupper(ch); }
};
std::transform(v.begin(), v.end(), v.begin(), make_upper());
// method 2
std::transform(v.begin(), v.end(), v.begin(), [](auto&& ch) { return std::toupper(ch); });
}
#包括
#包括
#包括
对于std::toupper
,有多个重载
模板推导发生在重载选择之前,因此必须是特定的,或者将调用包装在lambda或function对象中
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<char> v{'a', 'b', 'c', 'd'};
// method 1
struct make_upper
{
int operator()(int ch) const { return std::toupper(ch); }
};
std::transform(v.begin(), v.end(), v.begin(), make_upper());
// method 2
std::transform(v.begin(), v.end(), v.begin(), [](auto&& ch) { return std::toupper(ch); });
}
#包括
#包括
#包括
标准C函数toupper在标头中声明。将其包含在诸如::toupper之类的算法调用中。标准C函数toupper在标头中声明。将其包含在诸如::toupper之类的算法调用中。
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<char> v{'a', 'b', 'c', 'd'};
// method 1
struct make_upper
{
int operator()(int ch) const { return std::toupper(ch); }
};
std::transform(v.begin(), v.end(), v.begin(), make_upper());
// method 2
std::transform(v.begin(), v.end(), v.begin(), [](auto&& ch) { return std::toupper(ch); });
}