我們在前面講了stl中常見的容器:順序容器(string,vector,deque,stack,queue,list)和關聯式容器(set,map)。
本節主要討論一下,以上各種容器中,資料是如何傳遞的。
資料的傳遞的方式主要有一下幾種:
stl中資料是以值的方式進行傳遞的,stl中的元素物件都要能夠拷貝,否則無法插入stl容器中。談到拷貝,那麼不可避免的要討論一下深拷貝淺拷貝的問題。
我們先來看一段**:
#define _crt_secure_no_warnings
#include
#include
#include
using
namespace
std;
class teacher
~teacher()
this->age = 0;
}};void test()
int main()
思考一下,這段**為什麼出錯了?
因為c++ stl中的copy是淺copy。只拷貝的字元指標name,卻沒有copy字元指標所指向的堆記憶體空間
。所以在程式結束的時候,vector容器中的兩個teacher物件釋放了name指標所指向的堆記憶體空間,輪到物件t1和t2釋放name所指向的記憶體空間時,發現找不到該記憶體空間了。於是程式崩潰。
解決方法就是過載拷貝建構函式和運算子=。將字元指標name所指向的堆記憶體空間也拷貝過來。
**如下:
#define _crt_secure_no_warnings
#include
#include
#include
using
namespace
std;
class teacher
teacher(const teacher & t)
teacher& operator=(teacher &t)
~teacher()
this->age = 0;
}};void test()
cout
<< endl;
}int main()
C STL中的容器
用c 寫資料結構習題也有一段時間了,不得不說stl容器對資料結構真的很有用。c stl standard template library,標準模板庫 是一套功能強大的 c 模板類,其中包含4個元件,分別為演算法 容器 函式 迭代器。所以想總結一下自己用的容器,為什麼要用它以及怎麼用?c c 原生的...
c STL中的容器
容器作為stl的重要組成部分,其主要包括兩大類 順序容器 和 關聯容器 雖說這二者都是用來儲存資料的資料結構,但是他們的底層實現和特長有很大差別 關聯容器有8種 1 map 紅黑樹 2 set 紅黑樹 3 multimap 紅黑樹 4 multiset 紅黑樹 5 unordered map 雜湊表...
C STL中的容器簡介
c stl中提供了強大的容器 containers 來替代程式中常用的資料結構,主要包括 字串 string 動態陣列 vector 佇列 queue 棧 stack 堆 priority queue 鏈結表 list 集合 set 字典 map 使用這些容器可以極大的簡化程式的編寫,提高程式設計的...