gpt4 book ai didi

c++ - 将 boost::lexical_cast 与 std::transform 一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:58 25 4
gpt4 key购买 nike

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>);

错误信息是:

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>)'

这清楚地表明 lexical_cast 作为 transform 的最后一个参数存在问题...有没有办法避免编写包装 lexical_cast 的函数对象?

谢谢!

最佳答案

这是未经测试的,但您可以尝试:

transform(x.begin(), x.end(), y.begin(), lexical_cast<string, int>);

lexical_cast是一个有两个模板参数的模板。通常第二个是从参数的类型推导中推导出来的,但您没有提供参数,因此您需要明确指定它。

关于c++ - 将 boost::lexical_cast 与 std::transform 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com