溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中標準模板類的示例分析

發(fā)布時間:2021-09-14 13:38:24 來源:億速云 閱讀:105 作者:小新 欄目:開發(fā)技術

小編給大家分享一下C++中標準模板類的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1 標準模板庫

STL提供了表示容器、迭代器、函數對象和算法的模板。

  • 容器:類似數組存儲若干值,切實同質的;

  • 迭代器:遍歷容器的對象,類似遍歷數組的指針,廣義指針;

  • 算法:完成特定的任務;

  • 函數對象:類對象或函數指針。

模板類 vector

erase() 刪除矢量中給定區(qū)間元素。接受兩個迭代器參數(該參數定義了要刪除的區(qū)間),迭代器1指向區(qū)間起始處,迭代器2指向區(qū)間終止處的后一個位置。

// delete first and second elements
data.erase(data.begin(), data.begin() + 2);

insert() 與erase() 功能相反。接受三個迭代器參數。param1 指定新元素插入位置,param2 和 param3 定義別插入的區(qū)間(通常是其他對象)。

// insert [old.begin + 1, old.end) in the front of data
data.insert(data.begin(), old.begin() + 1, old.end());
// 此時,超尾元素顯得十分方便
// 在末尾緊挨著插入元素
data.insert(data.end(), old.begin() + 1, old.end());

for_each() 接受三個參數。param1 和 param2 是定義容器中區(qū)間的迭代器,param3 指向函數的指針(函數對象)。將被指向的函數(param3)用于區(qū)間 [param1, param2) 的各個元素。但是被指向的函數 param3 不可以修改區(qū)間的值。 

// 代替for循環(huán)
for(auto iter = data.begin(); iter != data.end(); iter++) {
    showData(*iter);
}
// replace for with for_each
// 注意此處的函數showData不能修改data的值。
for_each(data.begin(), data.end(), showData);

sort() 排序函數。

1)接受2個區(qū)間的迭代器參數,對元素利用<運算符進行操作。

2)接受3個參數,前兩個指定區(qū)間的迭代器,最后一個指向要是有的函數指針(對象)。這里的函數類似仿函數特性,但是形式不同于仿函數。

區(qū)分全排列(total ordering)和完整弱排序(strict weak ordering)。

// usage 1
sort(data.begin(), data.end());
// usage 2
bool compare(const structData& a, const structData& b) {
    if(a.index == b.index) {
        return a.data < b.data;
    }
    return a.index < b.index;
}
// sort with index from little to big, if index is equal, sort with data.
sort(data.begin(), data.end(), compare);

基于范圍 for 循環(huán)。不同于 for_each,基于范圍的for循環(huán)可以修改容器的內容。

2.泛型編程

泛型編程旨在編寫獨立于數據結構的代碼(即編寫一套可以適用于所有數據結構的函數代碼)。模板可以按照泛型定義函數或者類。

以上是“C++中標準模板類的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI