C STL專案實戰記

2021-10-03 16:53:03 字數 1875 閱讀 5896

stl包含了三個部分

1.容器:用來存放資料的物件,可以存放普通資料型別,和自己定義的類

2.演算法:開發者們已經封裝成函式的演算法,供我們實際開發中直接呼叫,加快開發速度

3.迭代器:stl下的產物,用來遍歷容器中的演算法,迭代器並不是指向當前元素,而是當前元素的下乙個元素

專案要求:

寫乙個自己的stl要求能放下不同的資料型別包括類的物件

提供兩個方法返回容器內最大值和最小值

思考過程:要求放下不同的資料型別和物件,那麼毫無意義要使用類模板

要返回最大值和最小值,已經又stl中其實已經有實現排序的容器,就是set,所以選用set

#pragma once

#ifndef define_size

#define define_size

#include

using

namespace std;

template

<

typename _ty,

typename _container = std::set<_ty>>

class

container_size

// 拷貝建構函式

container_size

(const mty& right):c

(right.c)

// 用內建容器賦值建構函式

container_size

(const _container& interior):c

(interior)

// 賦值函式

mty &

operator=(

const container_size& value)

// 返回容器大小

size_type size()

// 插入元素

bool

insert

(value_type value)

else

return pit.second;

*/// multiset和set都可以插入的版本

_container::iterator ci = c.

insert

(c.begin()

,value);if

(ci != c.

end())

cout <<

"插入失敗"

<< endl;

return

false;}

bool

erase

(value_type value)

else

return ret;

}// 返回最小值

std::pairbool

>

minimum()

else

return pit;

}// 返回最大值

std::pairbool

>

maximum()

else

return pit;

}// 列印容器資料

void

print()

cout << endl;

}// 清空容器

void

clear()

bool

empty()

protected

: _container c;};

#endif

專案總結:類內成員有物件成員時,可以在建構函式後面的初始化列表對其初始化

實現通用的stl時,如果想修改內建容器物件的型別那麼自己實現stl的函式的內部呼叫的函式必須是

通用的,比如同時支援multiset和set,那麼使用insert方法時,必須選擇multiset和set裡都有的相同版本的函式。

獨立開發專案實戰記錄》

cnzz統計 目前僅支援b站c站 技術棧 chrome外掛程式開發 詳情 純js開發版 umijs重構版 b站外鏈外掛程式 實時將本地的檔案同步到git倉庫中 我的應用伺服器專案 我的應用客戶端專案 技術棧 vue2.0 預覽 技術棧 html css js 屬於合成大西瓜的魔改版,鬼畜全明星人頭,...

vi實戰記錄

vi編輯器在unix和linux中比較早期的,vim是vi的擴充套件集,是對vi的加強。伺服器最小化,預設整合vi編輯器!了解vi常用命令,工作起來頗有 洪荒之力!01.關於退出 wq 強制儲存退出 wq 儲存退出 x 作用和 wq 一樣 zz 作用和 wq一樣,注意z是大寫的,並且不是在命令模式 ...

Angular實戰記錄

子元件中ngmodel繫結的值改變時,通過onchangecallback 傳回父元件時,有兩種情況 基本資料型別 string number 等變數,父元件中會跟著變化 非基本資料型別 date 父元件中不會檢測到變化 解決方法 建立乙個新物件傳回 this.onchangecallback ne...