對c++string庫部分介面的實現,通過介面間的復用,使個個介面緊密聯絡,更加簡潔。
重要介面expand()通過檢測當前物件容量是否滿足要求,對物件進行擴容等操作。
此次實現string全部使用的是深拷貝。
#include#include#include
#includeusing namespace std;
class string
string(const string& s)
:_size(s._size)
, _capacity(s._capacity)
, _str(new char[s._capacity + 1])
//string(const string& s)
//:_size(0)
//,_capacity(0)
//,_str(null)
// string& operator=(string s)
~string()
}void insert(size_t pos, char s)
size_t end = _size;
while (end >= pos)
_str[pos] = s;
_size++;
}void insert(size_t pos, const
char* str)
size_t index = 0;
while (index_
str[pos + index] = str[index];
index++;
pos++;
}_size += len;
}char* str)
char* c_str()
void swap(string& s)
size_t size()const
size_t length()const
void expand(size_t n)
}char& operator(size_t pos)
string& operator+=(const string& s)
string operator+(const string& s)
void erase(size_t pos, size_t n)
else
_size -= n;}}
void pushback(char s)
void popback()
bool operator>(const string& s)const
else
if (*str1<*str2)
else
}if (*str1 == '\0')
return
false;
else
}bool operator>=(const string& s)const
}return
true;
}bool operator<(const string& s)const
else
if (*str1>*str2)
else
}if (*str2 == '\0')
return
false;
else
return
true;
}bool operator<=(const string& s)const
}return
true;
}void print()const
private:
char* _
str;
size_t _size;
size_t _capacity;
};
Set介面的實現類
set是一種不包括重複元素的collection。它維持它自己的內部排序,所以隨機訪問沒有任何意義。與list一樣,它同樣執行null的存在但是僅有乙個。由於set介面的特殊性,所有傳入set集合中的元素都必須不同,同時要注意任何可變物件,如果在對集合中元素進行操作時,導致e1.equals e2 ...
實現介面的列舉類
由列舉類實現介面裡的方法,每個列舉值呼叫該方法由相同的行為方式。若要每個列舉值在呼叫該方法時由不同的行為方式,可讓每個列舉值分別實現該方法。public enum gender implements genderdesc female 女 上例中male,female建立列舉值是,不是直接建立gen...
Map介面的實現類
雜湊表就是一種以鍵 值 key indexed 儲存資料的結構,只要輸入待查詢的值即 key,即可查詢到其對應的值。雜湊的思路很簡單,如果所有的鍵 hashcode 都是整數,那麼就可以使用乙個簡單陣列來實現 將鍵作為索引,值即為其對應的值,這樣就可以快速訪問任意鍵的值。簡單的計算方法 hashco...