Link linklist.cpp

This commit is contained in:
Cuyler36
2023-12-02 14:35:29 -05:00
parent c815fef8cb
commit e01a9b4f74
6 changed files with 80 additions and 54 deletions
+7 -13
View File
@@ -5,22 +5,15 @@
namespace std {
struct input_iterator_tag {};
/* TODO: these should be properly implemented */
template<class Iterator>
struct iterator_traits {
typedef typename Iterator::difference_type difference_type;
typedef typename Iterator::value_type value_type;
typedef typename Iterator::pointer pointer;
typedef typename Iterator::reference reference;
typedef typename Iterator::iterator_category iterator_category;
};
struct input_iterator_tag {};
template <class InputIterator>
inline
typename iterator_traits<InputIterator>::difference_type
s32
__distance(InputIterator first, InputIterator last, input_iterator_tag) {
typename iterator_traits<InputIterator>::difference_type result = 0;
s32 result = 0;
for (; first != last; ++first)
++result;
return result;
@@ -28,9 +21,10 @@ __distance(InputIterator first, InputIterator last, input_iterator_tag) {
template <class InputIterator>
inline
typename iterator_traits<InputIterator>::difference_type
s32
distance(InputIterator first, InputIterator last) {
return __distance(first, last, typename iterator_traits<InputIterator>::iterator_category());
input_iterator_tag tag;
return __distance(first, last, tag);
}
} // namespace std