完成删除

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