完成删除

This commit is contained in:
邹晓航
2014-10-10 14:35:50 +08:00
parent 2338d23cd0
commit e52bbfce70

View File

@@ -81,6 +81,7 @@ namespace TinySTL{
char& front(){ return *(start_); } char& front(){ return *(start_); }
const char& front() const{ return front(); } const char& front() const{ return front(); }
void push_back(char c){ insert(end(), c); }
string& insert(size_t pos, const string& str); string& insert(size_t pos, const string& str);
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen = npos); string& insert(size_t pos, const string& str, size_t subpos, size_t sublen = npos);
string& insert(size_t pos, const char* s); string& insert(size_t pos, const char* s);
@@ -90,18 +91,26 @@ namespace TinySTL{
iterator insert(iterator p, char c); iterator insert(iterator p, char c);
template <class InputIterator> template <class InputIterator>
iterator insert(iterator p, InputIterator first, InputIterator last); iterator insert(iterator p, InputIterator first, InputIterator last);
string& append(const string& str);
string& append(const string& str, size_t subpos, size_t sublen = npos);
string& append(const char* s);
string& append(const char* s, size_t n);
string& append(size_t n, char c);
template <class InputIterator>
string& append(InputIterator first, InputIterator last);
string& operator+= (const string& str);
string& operator+= (const char* s);
string& operator+= (char c);
string& operator+= (const string& str){ void pop_back(){ erase(end() - 1, end()); }
insert(size(), str); string& erase(size_t pos = 0, size_t len = npos);
return *this; iterator erase(iterator p);
} iterator erase(iterator first, iterator last);
string& operator+= (const char* s){
insert(size(), s); void swap(string& str){
return *this; std::swap(start_, str.start_);
} std::swap(finish_, str.finish_);
string& operator+= (char c){ std::swap(endOfStorage_, str.endOfStorage_);
insert(end(), c);
return *this;
} }
private: private:
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>ռ<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>ռ<D5BC><E4B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -137,7 +146,8 @@ namespace TinySTL{
dataAllocator::destroy(start_, finish_); dataAllocator::destroy(start_, finish_);
dataAllocator::deallocate(start_, endOfStorage_ - start_); dataAllocator::deallocate(start_, endOfStorage_ - start_);
} }
}; };// end of string
const size_t string::npos; const size_t string::npos;
string::string(size_t n, char c){ string::string(size_t n, char c){
@@ -293,5 +303,58 @@ namespace TinySTL{
string::iterator string::insert(iterator p, char c){ string::iterator string::insert(iterator p, char c){
return insert(p, 1, c); return insert(p, 1, c);
} }
string& string::operator+= (const string& str){
insert(size(), str);
return *this;
}
string& string::operator+= (const char* s){
insert(size(), s);
return *this;
}
string& string::operator+= (char c){
insert(end(), c);
return *this;
}
string& string::append(const string& str){
(*this) += str;
return *this;
}
string& string::append(const string& str, size_t subpos, size_t sublen){
insert(size(), str, subpos, sublen);
return *this;
}
string& string::append(const char* s){
(*this) += s;
return *this;
}
string& string::append(const char* s, size_t n){
insert(size(), s, n);
return *this;
}
string& string::append(size_t n, char c){
insert(end(), n, c);
return *this;
}
template <class InputIterator>
string& string::append(InputIterator first, InputIterator last){
insert(end(), first, last);
return *this;
}
string::iterator string::erase(iterator first, iterator last){
size_t lengthOfMove = finish_ - last;
for (auto i = 0; i != lengthOfMove; ++i){
*(first + i) = *(last + i);
}
dataAllocator::destroy(first + lengthOfMove, finish_);
finish_ = first + lengthOfMove;
return first;
}
string& string::erase(size_t pos, size_t len){
erase(begin() + pos, begin() + pos + len);
return *this;
}
string::iterator string::erase(iterator p){
return erase(p, end());
}
} }
#endif #endif