stl共性拷貝機制
stl元素放入容器 是拷貝進行的 是值寓意 而非引用寓意,
也就是說當我們給容器插入元素的時候,容器內部實施拷貝動作。
將我們要插入的元素再另行拷貝乙份放入到容器中,而不是將原資料元素直接放進容器中,
也就是我們提供的元素必須能被拷貝。
解決方法 加入拷貝建構函式
1 除了queue 和stack 之外,每個容器都提供可返回迭代器的函式,
運用返回的迭代器可以訪問元素
2 通常stl不會丟擲異常 需要使用者傳入正確引數
3 每個容器提供乙個預設的拷貝函式 和 預設的拷貝建構函式
4 大小相關的構造方法 1 size()返回容器中的元素的個數 2 empty()判讀容器是否為空
未加入拷貝建構函式前
加入拷貝建構函式後
**如下
class teacher
//拷貝構造 如果沒有這個程式容易崩潰
teacher(const teacher& t)
//過載=
teacher& operator=(teacher& t)
this->name = new char[len];
strcpy(this->name, t.name);
this->age = t.age;
return *this;
} ~teacher()
this->age = 0;
} char* name;
int age;
};//測試函式 深拷貝和淺拷貝 程式在執行完test 會釋放掉 會呼叫析構函式
void test01()
int main()
C 容器之淺拷貝與深拷貝
二 深拷貝 淺拷貝不開闢新空間,只增加乙個指標,指向原有的記憶體。析構函式 person private char mname 指標 容易淺拷貝的問題 int mage void test01 intmain void 程式執行出錯 因為,發生了淺拷貝,p 和 vperson兩個物件指標指向同一塊記...
STL容器與拷貝建構函式
所有容器提供的都是 value語意 而非 reference語意 容器內進行元素的安插操作時,內部實施的是拷貝操作,置於容器內。因此stl容器 的每乙個元素都必須能夠拷貝。以vector為例,往vector中 實際上所有stl容器都是這樣 放元素,vector會呼叫元素類的拷貝建構函式生成的副本,當...
python 中的拷貝 淺拷貝與深拷貝
0.序列指什麼?序列型別是指容器內的元素從0開始的索引順序訪問,一次可以訪問乙個或者多個元素,包括字串 string 元組 tuple 列表 list the difference between tuple and list tuple would not be changed,but list ...