This commit is contained in:
邹晓航
2014-09-23 17:35:06 +08:00
parent db47647c71
commit 72208af19f
2 changed files with 10 additions and 10 deletions

View File

@@ -35,11 +35,13 @@ namespace TinySTL{
viter& operator --(){ --ptr_; return *this; }
viter operator --(int){ viter temp = *this; --(*this); return temp; }
bool operator == (const viter& vit){ return ptr_ == vit.ptr_; }
bool operator != (const viter& vit){ return !(*this == vit); }
bool operator == (const viter& vit)const{ return ptr_ == vit.ptr_; }
bool operator != (const viter& vit)const{ return !(*this == vit); }
viter operator + (const difference_type i){ return viter(ptr_ + i); }
viter& operator += (const difference_type i){ ptr_ += i; return *this; }
viter operator - (const difference_type i){ return viter(ptr_ - i); }
difference_type operator - (const viter& vit){ return (ptr_ - vit.ptr_); }
viter& operator -= (const difference_type i){ ptr_ -= i; return *this; }
difference_type operator - (const viter& vit)const{ return (ptr_ - vit.ptr_); }
friend viter operator + (const viter& vit, const difference_type i);
friend viter operator + (const difference_type i, const viter& vit);
@@ -55,6 +57,7 @@ namespace TinySTL{
if (this != &vit){
ptr_ = vit.ptr_;
}
return *this;
}
template<class T>
viter<T> operator + (const viter<T>& vit, const typename viter<T>::difference_type i){
@@ -83,11 +86,10 @@ namespace TinySTL{
T *endOfStorage_;
typedef Alloc dataAllocator;
//Alloc dataAllocator;
public:
typedef T value_type;
typedef viter<T> iterator;
typedef reverse_iterator<T *> reverse_iterator;
typedef reverse_iterator<viter<T>> reverse_iterator;
typedef iterator pointer;
typedef T& reference;
typedef size_t size_type;

View File

@@ -16,12 +16,10 @@ using namespace TinySTL;
int main(){
int i = 11; int *ptr = &i;
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//TinySTL::vector<int> v(array, array + 9);
TinySTL::vector<int> v(array, array + 9);
std::vector<int> v(array, array + 9);
TinySTL::reverse_iterator<std::vector<int>::iterator> beg(v.end());
TinySTL::reverse_iterator<std::vector<int>::iterator> end(v.begin());
for (auto rit = beg; rit != end; ++rit){ cout << *rit << endl; }
for (auto rit = v.rbegin(); rit != v.rend();rit = rit + 1){ cout << *rit << endl; }
//TinySTL::reverse_iterator<std::list<int>::iterator> rit(List.begin());
system("pause");