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...