From 72208af19fc6798294647c4615e6481035fb0cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=93=E8=88=AA?= <1210603696@qq.com> Date: Tue, 23 Sep 2014 17:35:06 +0800 Subject: [PATCH] bug fix --- TinySTL/Vector.h | 12 +++++++----- TinySTL/main.cpp | 8 +++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/TinySTL/Vector.h b/TinySTL/Vector.h index 866a5fa..6179bf0 100644 --- a/TinySTL/Vector.h +++ b/TinySTL/Vector.h @@ -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 viter operator + (const viter& vit, const typename viter::difference_type i){ @@ -83,11 +86,10 @@ namespace TinySTL{ T *endOfStorage_; typedef Alloc dataAllocator; - //Alloc dataAllocator; public: typedef T value_type; typedef viter iterator; - typedef reverse_iterator reverse_iterator; + typedef reverse_iterator> reverse_iterator; typedef iterator pointer; typedef T& reference; typedef size_t size_type; diff --git a/TinySTL/main.cpp b/TinySTL/main.cpp index fd0b458..4342709 100644 --- a/TinySTL/main.cpp +++ b/TinySTL/main.cpp @@ -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 v(array, array + 9); + TinySTL::vector v(array, array + 9); - std::vector v(array, array + 9); - TinySTL::reverse_iterator::iterator> beg(v.end()); - TinySTL::reverse_iterator::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::iterator> rit(List.begin()); system("pause");