動態儲存類
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 ...