在没有lambda的情况下传递模板函数来转换
Pass template function to transform without lambda
我目前有c++11函数:
template<class IteratorIn>
std::string to_string_join(IteratorIn first, IteratorIn last, std::string joiner) {
std::vector<std::string> ss(last - first);
std::transform(
first, last, begin(ss),
[](typename std::iterator_traits<IteratorIn>::value_type d) {
return std::to_string(d);
}
);
return boost::algorithm::join(ss, joiner);
}
可以这样使用:
std::vector<int> is{-1, 2, 62, 4, -86, 23, 8, -0,2};
std::cout << to_string_join(begin(is), end(is), ", ") << std::endl;
输出:
"-1, 2, 62, 4, -86, 23, 8, 0,2".
我在另一篇文章"将vector - double转换为vector - string-优雅的方式"中读到lambda不是必需的。然而,我还没有能够实现删除lambda。
我猜它应该看起来像这样:
std::transform(
first, last, begin(ss),
std::to_string<typename std::iterator_traits<IteratorIn>::value_type>
);
导致编译错误:
"error: expected ' (' before '> ' token".
如何在没有lambda的情况下传递to_string ?
由于std::to_string
不是函数模板而出现错误。您正在寻找static_cast
,而不是模板参数。
std::transform(
first, last, begin(ss),
static_cast<std::string(*)(typename std::iterator_traits<IteratorIn>::value_type)>(std::to_string)
);
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- C++函数转换为 C# 函数
- 将 C 函数转换为 C++ 以检查数字是否有效
- C++:从重载函数转换为 std::function
- 将 C 函数转换为C++语言
- C++隐式构造函数转换,后跟类型向上转换
- 将 lambda 函数转换为具有混合 lambda 引入器和参数列表的函子结构
- 通过 Boost Python 将 Python 函数转换为 C++,用作回调
- 如何将 MATLAB 图像处理库内置函数转换为 MATLAB 编码器代码生成不支持的 C++?
- 如何将函数转换为 lambda 函数
- 自定义函数转换错误?
- 将 C# 哈希函数转换为C++
- 将 lambda 函数转换为另一个编译单元中的普通函数会缩短编译时间吗?
- 加快 R 性能或将 R 函数转换为C++函数
- 将成员函数转换为指向成员函数的指针
- 将MATLAB炒作函数转换为C
- Rcpp - 用二进制函数转换数字向量?
- C lambda函数转换误差
- 此语法中的构造函数转换错误
- 将函数转换为find_if lambda