|
|
|
|
iterator &operator+(double);
|
|
*it, it->, ++it, it++, it==jt, it not_eq jt
|
|
copy(arg,arg+sz,elem);
to compile, I need to overload a move_iterator the vector class, right? How do I do that?
|
|
copy(arg,arg+sz,elem);
to compile, I need to overload acopy(arg.elem, arg.elem+arg.sz, elem);
|
|
|
|
no type named 'iterator_category' in 'std::iterator_traits<vector>' |
What do you expect me to do? |
no type named 'iterator_category' in 'std::iterator_traits<vector>' |
Also, how do I create that copy() member function? |
Will it take away that error message? |
1>------ Build started: Project: custom_vector, Configuration: Debug Win32 ------ 1>custom_vector.cpp 1>In file included from custom_vector.cpp:7: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\iostream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\istream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ios:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xstring:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xmemory0:10: 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(641,2): error : no type named 'iterator_category' in 'std::iterator_traits<vector>' 1> using _Iter_cat_t = typename iterator_traits<_Iter>::iterator_category; 1> ^~~~~ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(984,45) : note: in instantiation of template type alias '_Iter_cat_t' requested here 1> _Debug_range2(_First, _Last, _File, _Line, _Iter_cat_t<_InIt>()); 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(2281,2) : note: in instantiation of function template specialization 'std::_Debug_range<vector>' requested here 1> _DEBUG_RANGE(_First, _Last); 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(931,2) : note: expanded from macro '_DEBUG_RANGE' 1> _DEBUG_RANGE_IMPL(first, last, _FILENAME, __LINE__) 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(927,30) : note: expanded from macro '_DEBUG_RANGE_IMPL' 1> #define _DEBUG_RANGE_IMPL _Debug_range 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(2295,10) : note: in instantiation of function template specialization 'std::_Copy_no_deprecate<vector, double *>' requested here 1> return (_Copy_no_deprecate(_First, _Last, _Dest)); 1> ^ 1>custom_vector.cpp(92,7) : note: in instantiation of function template specialization 'std::copy<vector, double *>' requested here 1> std::copy(arg, arg + sz, elem); 1> ^ 1>In file included from custom_vector.cpp:7: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\iostream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\istream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ostream:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\ios:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xlocnum:10: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\streambuf:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xiosbase:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xlocale:8: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\stdexcept:7: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xstring:6: 1>In file included from C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xmemory0:10: 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(641,2): error : no type named 'iterator_category' in 'std::iterator_traits<vector>' 1> using _Iter_cat_t = typename iterator_traits<_Iter>::iterator_category; 1> ^~~~~ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(689,50) : note: in instantiation of template type alias '_Iter_cat_t' requested here 1> return (_Idl_distance1<_Checked>(_First, _Last, _Iter_cat_t<_Iter>())); 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(2284,42) : note: in instantiation of function template specialization 'std::_Idl_distance<vector, vector>' requested here 1> const auto _UDest = _Unchecked_n(_Dest, _Idl_distance<_InIt>(_UFirst, _ULast)); 1> ^ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\include\xutility(2295,10) : note: in instantiation of function template specialization 'std::_Copy_no_deprecate<vector, double *>' requested here 1> return (_Copy_no_deprecate(_First, _Last, _Dest)); 1> ^ 1>custom_vector.cpp(92,7) : note: in instantiation of function template specialization 'std::copy<vector, double *>' requested here 1> std::copy(arg, arg + sz, elem); 1> ^ 1>2 errors generated. 1>Done building project "custom_vector.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
|
|
|
|
|
|
*this + i
isn't going to work, because you still havent defined what that means. *this + i
calculation did make sense, line 123 would calculate something and then throw the result away. It's the equivalent of just writing:
|
|
|
|
|
|
copy( vector, vector+int, double* );
copy(arg.elem, arg.elem+arg.sz, elem);
How do I tell it what it means, then? |
this + i
means in the operator+
method. How does adding an integer to a vector change that vector? Write the code that makes that change.
|
|
|
|
|
|