Fra*_*ank 5 c++ boost transform lexical-cast
g ++不喜欢:
vector<int> x;
x += 1,2,3,4,5;
vector<string> y(x.size());
transform(x.begin(), x.end(), y.begin(), lexical_cast<string>);
Run Code Online (Sandbox Code Playgroud)
错误消息是:
error: no matching function for call to 'transform(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, <unresolved overloaded function type>)'
Run Code Online (Sandbox Code Playgroud)
这清楚地表明lexical_cast是最后一个转换参数的问题......有没有办法避免编写包含lexical_cast的函数对象?
谢谢!
这是未经测试的,但您可以尝试:
transform(x.begin(), x.end(), y.begin(), lexical_cast<string, int>);
Run Code Online (Sandbox Code Playgroud)
lexical_cast是一个带有两个模板参数的模板.通常,第二个是从参数的类型推导推导出来的,但是你没有提供参数,所以你需要明确地指定它.
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |