Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++ 定义模板c++;_C++_Templates - Fatal编程技术网

C++ 定义模板c++;

C++ 定义模板c++;,c++,templates,C++,Templates,这是一个noob问题对不起:( 我不知道为什么这会给我一个错误,有人能解释一下吗? 例如,我想做: vector<double> a; string s("0.11 11.0002"); copys(s, a); template <typename T, typename S> void copys(T& c, S& d) { istringstream iss(c); copy(istream_iterator<S>(i

这是一个noob问题对不起:( 我不知道为什么这会给我一个错误,有人能解释一下吗? 例如,我想做:

vector<double> a;
string s("0.11 11.0002");
copys(s, a);


template <typename T, typename S>
void copys(T& c, S& d)
{
    istringstream iss(c);
    copy(istream_iterator<S>(iss), istream_iterator<S>(),
        back_inserter(d));
    return;
}
向量a;
字符串s(“0.11.0002”);
副本(s,a);
样板
无效副本(T&c、S&d)
{
istringstream iss(c);
复制(istream_迭代器(iss),istream_迭代器(),
背部插入器(d);
回来
}
编译器的错误是:

   /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stream_iterator.h: In member function `void std::istream_iterator<_Tp, _CharT, _Trai
    ts, _Dist>::_M_read() [with _Tp = std::vector<double, std::allocator<double> >, _CharT = char, _Traits = std::char_traits<char>, _Dist
    = int]':
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stream_iterator.h:68:   instantiated from `std::istream_iterator<_Tp, _CharT, _Trait
    s, _Dist>::istream_iterator(std::basic_istream<_CharT, _Traits>&) [with _Tp = std::vector<double, std::allocator<double> >, _CharT = ch
    ar, _Traits = std::char_traits<char>, _Dist = int]'
    ProfitCalculator.cpp:20:   instantiated from `void copys(T&, S&) [with T = std::basic_string<char, std::char_traits<char>, std::allocat
    or<char> >, S = std::vector<double, std::allocator<double> >]'
    ProfitCalculator.cpp:41:   instantiated from here
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stream_iterator.h:119: error: no match for `operator>>' in `*((std::istream_iterator
    <std::vector<double, std::allocator<double> >, char, std::char_traits<char>, int>*)this)->std::istream_iterator<std::vector<double, std
    ::allocator<double> >, char, std::char_traits<char>, int>::_M_stream >> ((std::istream_iterator<std::vector<double, std::allocator<doub
    le> >, char, std::char_traits<char>, int>*)this)->std::istream_iterator<std::vector<double, std::allocator<double> >, char, std::char_t
    raits<char>, int>::_M_value'
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:123: note: candidates are: std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>& (*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Tr
    aits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:127: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = s
    td::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:134: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:170: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(bool&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:174: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(short int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:177: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:181: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:184: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:188: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(long int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:192: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:197: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:201: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:206: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(float&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:210: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(double&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:214: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(long double&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:218: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(void*&) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/istream:242: note:                 std::basic_istream<_CharT, _Traits>& std::basic_istrea
    m<_CharT, _Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algobase.h: In static member function `static _OI std::__copy_move<<anonymous>,
    <anonymous>, <template-parameter-1-3> >::__copy_m(_II, _II, _OI) [with _II = std::istream_iterator<std::vector<double, std::allocator<d
    ouble> >, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<std::vector<double, std::allocator<double> > >, bool <ano
    nymous> = false, bool <anonymous> = false, <template-parameter-1-3> = std::input_iterator_tag]':
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algobase.h:396:   instantiated from `_OI std::__copy_move_a(_II, _II, _OI) [with
     bool _IsMove = false, _II = std::istream_iterator<std::vector<double, std::allocator<double> >, char, std::char_traits<char>, int>, _O
    I = std::back_insert_iterator<std::vector<double, std::allocator<double> > >]'
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algobase.h:435:   instantiated from `_OI std::__copy_move_a2(_II, _II, _OI) [wit
    h bool _IsMove = false, _II = std::istream_iterator<std::vector<double, std::allocator<double> >, char, std::char_traits<char>, int>, _
    OI = std::back_insert_iterator<std::vector<double, std::allocator<double> > >]'
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algobase.h:466:   instantiated from `_OI std::copy(_II, _II, _OI) [with _II = st
    d::istream_iterator<std::vector<double, std::allocator<double> >, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<s
    td::vector<double, std::allocator<double> > >]'
    ProfitCalculator.cpp:20:   instantiated from `void copys(T&, S&) [with T = std::basic_string<char, std::char_traits<char>, std::allocat
    or<char> >, S = std::vector<double, std::allocator<double> >]'
    ProfitCalculator.cpp:41:   instantiated from here
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_algobase.h:312: error: no match for `operator=' in `__result.std::back_insert_it
    erator<_Container>::operator* [with _Container = std::vector<double, std::allocator<double> >]() = __first.std::istream_iterator<_Tp, _
    CharT, _Traits, _Dist>::operator* [with _Tp = std::vector<double, std::allocator<double> >, _CharT = char, _Traits = std::char_traits<c
    har>, _Dist = int]()'
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_iterator.h:412: note: candidates are: std::back_insert_iterator<_Container>& std
    ::back_insert_iterator<_Container>::operator=(typename _Container::const_reference) [with _Container = std::vector<double, std::allocat
    or<double> >]
    /usr/lib/gcc/i686-pc-cygwin/4.3.4/include/c++/bits/stl_iterator.h:388: note:                 std::back_insert_iterator<std::vector<doub
    le, std::allocator<double> > >& std::back_insert_iterator<std::vector<double, std::allocator<double> > >::operator=(const std::back_ins
    ert_iterator<std::vector<double, std::allocator<double> > >&)
    make: *** [ProfitCalculator] Error 1
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stream_iterator.h:在成员函数'void std::istream_iterator::_M_read()[with _Tp=std::vector,_CharT=char,_Traits=std::char_Traits,_Dist
=int]':
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stream\u iterator.h:68:从'std::istream\u iterator::istream\u iterator(std::basic\u istream&')实例化[with Tp=std::vector,CharT=ch
ar,_Traits=std::char_Traits,_Dist=int]'
ProfitCalculator.cpp:20:从“void copys(T&,S&)[with T=std::basic_string,S=std::vector]实例化”
ProfitCalculator.cpp:41:从此处实例化
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stream\u迭代器。h:119:错误:与“*”((std::istream\u迭代器)中的“operator>>”不匹配
*)this)->std::istream_迭代器::_M_stream>>((std::istream_迭代器*)this)->std::istream_迭代器::_M_value'
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:123:注:候选项为:std::basic\u istream&std::basic\u istream
m::operator>>(std::basic_istream&(*)(std::basic_istream&))[带_CharT=char,_Tr
aits=std::char\u特征]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:127:注:std::basic\u istream&std::basic\u istream
m::operator>>(std::basic_ios&(*)(std::basic_ios&)[带_CharT=char,_Traits=s
td::char_特征]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:134:注:std::basic\u istream&std::basic\u istream
m::operator>>(std::ios_base&(*)(std::ios_base&)[带_CharT=char,_Traits=std::char_Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:170:注:std::basic\u istream&std::basic\u istream
m::operator>>(bool&)[带有_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:174:注:std::basic\u istream&std::basic\u istream
m::operator>>(短int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:177:注:std::basic\u istream&std::basic\u istream
m::operator>>(短无符号int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:181:注:std::basic\u istream&std::basic\u istream
m::operator>>(int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:184:注:std::basic\u istream&std::basic\u istream
m::operator>>(unsigned int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:188:注:std::basic\u istream&std::basic\u istream
m::operator>>(长整数&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:192:注:std::basic\u istream&std::basic\u istream
m::operator>>(长无符号int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:197:注:std::basic\u istream&std::basic\u istream
m::operator>>(long long int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:201:注:std::basic\u istream&std::basic\u istream
m::operator>>(长-长无符号int&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:206:注:std::basic\u istream&std::basic\u istream
m::operator>>(float&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:210:注:std::basic\u istream&std::basic\u istream
m::operator>>(双重&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:214:注:std::basic\u istream&std::basic\u istream
m::operator>>(长双(&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:218:注:std::basic\u istream&std::basic\u istream
m::operator>>(void*&)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/istream:242:注:std::basic\u istream&std::basic\u istream
m::operator>>(std::basic\u streambuf*)[带_CharT=char,_Traits=std::char\u Traits]
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stl_algobase.h:在静态成员函数中'static'u OI std::'u copy'u move::'u copy'm('u II,'u II,'u OI)[带'u II=std::istream\u迭代器,'u OI std::back u insert\u迭代器,bool=false,=std::input\u迭代器标签]:
/usr/lib/gcc/i686 pc-cygwin/4.3.4/include/c++/bits/stl_-algobase.h:396:从`"OI-std::"复制"移动"a(_-II,_-II,_-OI)[带
bool\u IsMove=false,\u II=std::istream\u迭代器,\u O
I=std::back\u insert\u迭代器]'
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stl_-algobase.h:435:从`"我的标准::"复制"移动"a2(_-II,_-II,_-OI)实例化
h bool _IsMove=false,_II=std::istream\u迭代器_
OI=std::返回\u插入\u迭代器]'
/usr/lib/gcc/i686 pc cygwin/4.3.4/include/c++/bits/stl_-algobase.h:466:从`_-OI-std::copy(_-II,_-II,_-OI)实例化)[带_-II=st
d::istream\u迭代器,\u OI=std::back\u insert\u迭代器]'
ProfitCalculator.cpp:20:从“void copys(T&,S&)[with T=std::basic_string,S=std::vector]实例化”
ProfitCalculator.cpp:41:从此处实例化
/美国
copy(istream_iterator<S>(iss), istream_iterator<S>(),
        back_inserter(d));
copy(istream_iterator<vector<double> >(iss), istream_iterator<vector<double> >(),
                      ^^^^^^^^^^^^^^^                         ^^^^^^^^^^^^^^^
        back_inserter(d));
typedef typename S::value_type value_type;
copy(istream_iterator<value_type>(iss), istream_iterator<value_type>(),
        back_inserter(d));