Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将boost::lexical_cast与std::transform一起使用_C++_Boost_Transform_Lexical Cast - Fatal编程技术网

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

C++ 将boost::lexical_cast与std::transform一起使用,c++,boost,transform,lexical-cast,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>); 向量x; x+=1,2,3,4,5; 向量y(x.size()); 转换(x.begin(),x.end(),y.begin(),词法转换); 错误消息是: error: no matching

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>);
向量x;
x+=1,2,3,4,5;
向量y(x.size());
转换(x.begin(),x.end(),y.begin(),词法转换);
错误消息是:

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>)'
错误:调用“transform(\uu gnu\u cxx::\uu normal\u迭代器,\uu gnu\u cxx::\uu normal\u迭代器,\uu gnu cxx::\uu normal\u迭代器,)时没有匹配的函数
这清楚地表明,词法转换作为转换的最后一个参数存在问题。。。有没有办法避免编写封装词法转换的函数对象


谢谢

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

transform(x.begin(), x.end(), y.begin(), lexical_cast<string, int>);
transform(x.begin(),x.end(),y.begin(),词法转换);

是一个具有两个模板参数的模板。通常情况下,第二个是从参数的类型推断得出的,但您没有提供参数,因此需要显式指定它。

在我看来,您可能需要
词法转换
,因为第二个模板参数没有参数推断<代码>词法转换可能会过载,这将要求您使用转换来消除对所需转换的歧义。这是有意义的。我应该看到的。谢谢