足跡C primer 46 動態儲存類

2021-09-09 01:37:24 字數 1889 閱讀 6396

動態儲存類

class strvec

//用initializer_list初始化引數列表

strvec(initializer_listil):strvec(il){}

//拷貝建構函式

strvec(const strvec&);

//拷貝賦值運算子

strvec &operator=(const strvec&);

//析構函式

~strvec();

void push_back(const string&); //拷貝元素進入佇列

size_t size() const //佇列存放元素個數

size_t capacity() const //佇列儲存空間大小

string* begin() const //起始指標

string* end() const //第乙個為空的元素

//。。

。 private: // vectorvs; allocatoralloc; //分配元素 //推斷是否要加入新的記憶體空間 void chk_n_alloc() //用到拷貝建構函式,拷貝賦值運算子,析構函式的工具函式 pairalloc_n_copy(const string*, const string*); void free(); //銷毀這個類的元素,並釋放空間 void reallocate(); //又一次分配空間而且把原來的元素移動到新空間上 string *elements; //指向這個佇列的第乙個元素 string *first_free; //指向這個佇列第乙個為空的元素,即最後元素的後一位 string *cap; //指向最後乙個空間位置後一位 };

void strvec::push_back(const string& s)

inline

pairstrvec::alloc_n_copy(const string* b, const string* e) //開始和結尾指標

; return p;

}

void strvec::free()

}

這裡有乙個錯誤演示。我也還沒搞懂為什麼報錯,調了半天沒出來,僅僅要留在這裡,以後攻克了。

void strvec::free()

); alloc.deallocate(elements, cap-first_free);

}}

改正錯誤:

void strvec::free()

); alloc.deallocate(elements, cap-first_free);

}}

strvec::strvec(const strvec &s)

inline

strvec::~strvec()

strvec &strvec::operator=(const strvec &rhs)

move在標頭檔案utility裡面

void strvec::reallocate()

ps:不要問我。為什麼你的英語突然變得那麼厲害了!。。我是不會告訴你我的那本中文版的c++ primer被我搞掉了的!。。!

足跡C primer 46 動態儲存類

動態儲存類 class strvec 用initializer list初始化引數列表 strvec initializer listil strvec il 拷貝建構函式 strvec const strvec 拷貝賦值運算子 strvec operator const strvec 析構函式 s...

足跡C primer 10 函式基礎

c 語言中,名字有作用域,物件有生命週期。名字的作用域是程式文字的一部分,名字在其中可見。物件生命週期是程式執行過程中該物件存在的一段時間。size t count calls int main return 0 和其他名字一樣,函式的名字也必須在使用之前宣告。類似於變數,函式只能定義一次,但可以宣...

足跡C primer 12 函式過載

main函式不能過載 record lookup const account account是乙個型別 record lookup const phone record lookup const name account acct phone phone record r1 lookup acct ...