完成删除
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user