bug fix
This commit is contained in:
@@ -19,7 +19,7 @@ namespace TinySTL{
|
|||||||
public:
|
public:
|
||||||
//<2F><><EFBFBD>졣<EFBFBD><ECA1A3><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD>졣<EFBFBD><ECA1A3><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
reverse_iterator() :base_(0), cur_(0){}
|
reverse_iterator() :base_(0), cur_(0){}
|
||||||
explicit reverse_iterator(iterator_type it) :base_(it), cur_(base_ - 1){}
|
explicit reverse_iterator(iterator_type it) :base_(it), cur_(it - 1){}
|
||||||
template <class Iter>
|
template <class Iter>
|
||||||
reverse_iterator(const reverse_iterator<Iter>& rev_it){
|
reverse_iterator(const reverse_iterator<Iter>& rev_it){
|
||||||
base_ = (iterator_type)rev_it.base();
|
base_ = (iterator_type)rev_it.base();
|
||||||
@@ -27,9 +27,9 @@ namespace TinySTL{
|
|||||||
};
|
};
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
|
||||||
iterator_type base() const{ return base_; }
|
iterator_type base(){ return base_; }
|
||||||
reference operator*() const{ return (*cur_); }
|
reference operator*(){ return (*cur_); }
|
||||||
pointer operator->() const{ return &(operator *()); }
|
pointer operator->(){ return &(operator *()); }
|
||||||
reverse_iterator& operator ++(){
|
reverse_iterator& operator ++(){
|
||||||
--base_;
|
--base_;
|
||||||
--cur_;
|
--cur_;
|
||||||
@@ -50,12 +50,12 @@ namespace TinySTL{
|
|||||||
--(*this);
|
--(*this);
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
reference operator[] (difference_type n) const{
|
reference operator[] (difference_type n){
|
||||||
return base()[-n - 1];
|
return base()[-n - 1];
|
||||||
}
|
}
|
||||||
reverse_iterator operator + (difference_type n) const;
|
reverse_iterator operator + (difference_type n);
|
||||||
reverse_iterator& operator += (difference_type n);
|
reverse_iterator& operator += (difference_type n);
|
||||||
reverse_iterator operator - (difference_type n) const;
|
reverse_iterator operator - (difference_type n);
|
||||||
reverse_iterator& operator -= (difference_type n);
|
reverse_iterator& operator -= (difference_type n);
|
||||||
private:
|
private:
|
||||||
Iterator advanceNStep(Iterator it,
|
Iterator advanceNStep(Iterator it,
|
||||||
@@ -130,13 +130,13 @@ namespace TinySTL{
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
template<class Iterator>
|
template<class Iterator>
|
||||||
reverse_iterator<Iterator> reverse_iterator<Iterator>::operator + (difference_type n) const{
|
reverse_iterator<Iterator> reverse_iterator<Iterator>::operator + (difference_type n){
|
||||||
reverse_iterator<Iterator> res = *this;
|
reverse_iterator<Iterator> res = *this;
|
||||||
res += n;
|
res += n;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
template<class Iterator>
|
template<class Iterator>
|
||||||
reverse_iterator<Iterator> reverse_iterator<Iterator>::operator - (difference_type n) const{
|
reverse_iterator<Iterator> reverse_iterator<Iterator>::operator - (difference_type n){
|
||||||
reverse_iterator<Iterator> res = *this;
|
reverse_iterator<Iterator> res = *this;
|
||||||
res -= n;
|
res -= n;
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "Allocator.h"
|
#include "Allocator.h"
|
||||||
#include "Algorithm.h"
|
#include "Algorithm.h"
|
||||||
#include "Iterator.h"
|
#include "Iterator.h"
|
||||||
|
#include "ReverseIterator.h"
|
||||||
#include "UninitializedFunctions.h"
|
#include "UninitializedFunctions.h"
|
||||||
|
|
||||||
namespace TinySTL{
|
namespace TinySTL{
|
||||||
@@ -86,6 +87,7 @@ namespace TinySTL{
|
|||||||
public:
|
public:
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
typedef viter<T> iterator;
|
typedef viter<T> iterator;
|
||||||
|
typedef reverse_iterator<T *> reverse_iterator;
|
||||||
typedef iterator pointer;
|
typedef iterator pointer;
|
||||||
typedef T& reference;
|
typedef T& reference;
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
@@ -113,6 +115,8 @@ namespace TinySTL{
|
|||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
iterator begin(){ return iterator(start_); }
|
iterator begin(){ return iterator(start_); }
|
||||||
iterator end(){ return iterator(finish_); }
|
iterator end(){ return iterator(finish_); }
|
||||||
|
reverse_iterator rbegin(){ return reverse_iterator(end()); }
|
||||||
|
reverse_iterator rend(){ return reverse_iterator(begin()); }
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
difference_type size()const{ return finish_ - start_; }
|
difference_type size()const{ return finish_ - start_; }
|
||||||
|
|||||||
@@ -1,37 +1,29 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <iterator>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "Vector.h"
|
#include "Vector.h"
|
||||||
#include "Profiler\Profiler.h"
|
#include "Profiler\Profiler.h"
|
||||||
|
#include "ReverseIterator.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace TinySTL::Profiler;
|
using namespace TinySTL;
|
||||||
|
|
||||||
int main(){
|
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);
|
||||||
|
|
||||||
//std::vector<std::string> vec;
|
std::vector<int> v(array, array + 9);
|
||||||
////TinySTL::vector<std::string> vec;
|
TinySTL::reverse_iterator<std::vector<int>::iterator> beg(v.end());
|
||||||
//ProfilerInstance::start();
|
TinySTL::reverse_iterator<std::vector<int>::iterator> end(v.begin());
|
||||||
//int i = 0;
|
for (auto rit = beg; rit != end; ++rit){ cout << *rit << endl; }
|
||||||
//for (; i != 1000; ++i){
|
//TinySTL::reverse_iterator<std::list<int>::iterator> rit(List.begin());
|
||||||
// vec.push_back(std::string("zouxiaohang"));
|
|
||||||
//}
|
|
||||||
//ProfilerInstance::finish();
|
|
||||||
//ProfilerInstance::dumpDuringTime();
|
|
||||||
TinySTL::vector<int> v(10, 1);
|
|
||||||
for (auto i : v){ cout << i << endl; }
|
|
||||||
cout << "size = " << v.size() << " capacity = " << v.capacity() << endl;
|
|
||||||
v.resize(9);
|
|
||||||
for (auto i : v){ cout << i << endl; }
|
|
||||||
cout << "size = " << v.size() << " capacity = " << v.capacity() << endl;
|
|
||||||
v.resize(20, -1);
|
|
||||||
for (auto i : v){ cout << i << endl; }
|
|
||||||
cout << "size = " << v.size() << " capacity = " << v.capacity() << endl;
|
|
||||||
v.push_back(0);
|
|
||||||
cout << "size = " << v.size() << " capacity = " << v.capacity() << endl;
|
|
||||||
system("pause");
|
system("pause");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user