日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL泛型算法总结

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL泛型算法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

泛型算法只是依賴于迭代器的操作,而不是依賴于容器

泛型算法可以分為3大類:

下面的vec和vec2代表相同類型的容器

1.只讀算法:只允許讀取其輸入范圍內的元素,而不改變元素

find(vec.cbegin(),vec.cend(),k)

查找算法:前兩個參數表示元素范圍的迭代器,第三個參數k表示要查找的元素,查找成功則返回等于第一個元素的迭代器,查找失敗返回尾后指針

accumulate(vec.cbegin(),vec.cend(),0)

求和算法:前兩個參數表示元素范圍的迭代器,第三個參數表示和的初始值,返回該類型的參數范圍內的和,可以為int,string等

equal(vec.cbegin(),vec.cend(),vec2.cbegin())

比較算法:將第一個范圍內的元素和第二個序列中的元素比較,如果對應元素都相等,返回true,否則返回false,這里默認第二個序列的元素數>=第一個范圍內的元素數

2.寫容器元素算法:將元素寫入輸入范圍

fill(vec.cbegin(),vec.cend(),0)

表示迭代器范圍內的值都被置為0(假設vec存的是int型)

fill_n(vec.begin(),vec.size(),0)

表示從指定迭代器 ?vec.begin() ?開始以后的vec.size()個元素的值都被置為0(假設vec存的是int型)

注:上面的寫算法不允許在空容器上調用,即容器中有幾個元素,寫算法才能寫幾個元素,只能修改,不能添加,如果想要添加只能使用插入迭代器(下篇會介紹)

copy(vec.cbegin(),vec.cend(),vec2.cbegin())拷貝算法:將迭代器范圍內的元素拷貝到vec2容器中,這里默認第二個容器的空間能夠存儲該迭代器范圍內的元素

replace(vec.cbegin(),vec.cend(),before,after)

替換算法:將容器迭代器范圍內的元素中 所有為before的元素替換為after的元素,before和after分別為存儲類型的具體數值

replace_copy(vec.cbegin(),vec.cend(),back_inserter(vec2),before,after)

替換算法:將容器迭代器范圍內的元素中 所有為before的元素替換為after的元素,并插入到vec2中,before和after分別為存儲類型的具體數值

3.重排容器元素算法

sort(vec.cbegin(),vec.cend())

排序算法:將迭代器范圍內的元素按照定義的“<”來進行排序

unique(vec.cbegin(),vec.cend())

排序算法:將迭代器范圍內的元素按照unique的標準庫算法進行排序,使得不重復的元素出現在開始的位置,并且返回一個指向最后一個不重復元素之后的迭代器

?

注:要真正刪除容器中的元素,必須使用容器操作,泛型算法只是依賴于迭代器的,向容器中插入元素可以不必使用容器操作,可以使用插入迭代器操作。

轉載于:https://www.cnblogs.com/runninglzw/p/4751220.html

總結

以上是生活随笔為你收集整理的STL泛型算法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。