C STL 9 STL容器中資料的傳遞

2021-07-30 03:55:06 字數 1107 閱讀 3857

我們在前面講了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 使用這些容器可以極大的簡化程式的編寫,提高程式設計的...