C String類介面的實現

2021-08-10 11:32:09 字數 1857 閱讀 7730

對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...