C++ 中 <iterator> <functional> <numeric> 庫(kù)好用的函數(shù)詳解
<iterator>
簡(jiǎn)述:迭代器省代碼用的。
std::advance
記憶方法:advance-前進(jìn)。
形如:advance(it, step)
,表示 it
迭代器自增 step
步。
實(shí)現(xiàn)類似于:
function advance(&it, n): while n > 0: --n ++it while n < 0: ++n --it
或
function advance(&it, n): it += n
std::next & std::prev
記憶方法:自己?jiǎn)栍⒄Z(yǔ)老師。
形如 next(it, n)
及 prev(it, n)
,默認(rèn) n = 1
,表示迭代器前移、后移 n
位。
為 std::advance
的變體,區(qū)別在于返回了迭代器而傳入迭代器不改變。
實(shí)現(xiàn)類似于:
function next(it, n = 1): -> iterator std::advance(it, n) return it function prev(it, n = 1): -> iterator std::advance(it, -n) return it
std::distance
記憶方法:distance-距離。
形如:distance(st, ed)
,表示迭代器 st
和 ed
之間的距離(從 st
跳到 ed
的距離)。
實(shí)現(xiàn)類似于:
function distance(first, last): result := 0 while first <> last: ++first ++result return result
或
function distance(first, last): return last - first
<functional>
簡(jiǎn)述:不用自己寫(xiě) lambda 了。
函數(shù) | 表示 |
---|---|
2.3 算術(shù)運(yùn)算 | |
plus | 實(shí)現(xiàn) x + y 的函數(shù)對(duì)象 (類模板) |
minus | 實(shí)現(xiàn) x - y 的函數(shù)對(duì)象 (類模板) |
multiplies | 實(shí)現(xiàn) x * y 的函數(shù)對(duì)象 (類模板) |
divides | 實(shí)現(xiàn) x / y 的函數(shù)對(duì)象 (類模板) |
modulus | 實(shí)現(xiàn) x % y 的函數(shù)對(duì)象 (類模板) |
negate | 實(shí)現(xiàn) -x 的函數(shù)對(duì)象 (類模板) |
2.4 比較 | |
equal_to | 實(shí)現(xiàn) x == y 的函數(shù)對(duì)象 (類模板) |
not_equal_to | 實(shí)現(xiàn) x != y 的函數(shù)對(duì)象 (類模板) |
greater | 實(shí)現(xiàn) x > y 的函數(shù)對(duì)象 (類模板) |
less | 實(shí)現(xiàn) x < y 的函數(shù)對(duì)象 (類模板) |
greater_equal | 實(shí)現(xiàn) x >= y 的函數(shù)對(duì)象 (類模板) |
less_equal | 實(shí)現(xiàn) x <= y 的函數(shù)對(duì)象 (類模板) |
2.6 邏輯運(yùn)算 | |
logical_and | 實(shí)現(xiàn) x && y 的函數(shù)對(duì)象 (類模板) |
logical_or | 實(shí)現(xiàn) x || y 的函數(shù)對(duì)象 (類模板) |
logical_not | 實(shí)現(xiàn) !x 的函數(shù)對(duì)象 (類模板) |
2.7 逐位運(yùn)算 | |
bit_and | 實(shí)現(xiàn) x & y 的函數(shù)對(duì)象 (類模板) |
bit_or | 實(shí)現(xiàn) x | y 的函數(shù)對(duì)象 (類模板) |
bit_xor | 實(shí)現(xiàn) x ^ y 的函數(shù)對(duì)象 (類模板) |
bit_not | 實(shí)現(xiàn) ~x 的函數(shù)對(duì)象 (類模板) |
<numeric>
簡(jiǎn)述:奇奇怪怪的簡(jiǎn)化程序?qū)懛ǖ膸?kù)。
std::iota
記憶方法:increase-(output)->ta
。
形如 iota(begin, end, value)
,表示 [begin, end)
從 value
開(kāi)始,遞增填充。
實(shí)現(xiàn)類似于:
function iota(first, last, value): while first <> last: [first] := value ++first ++value
std::accumulate
記憶方法:accumulate-積累。
形如 accumulate(begin, end, value)
,表示 [begin, end)
從 value
開(kāi)始,求和。
實(shí)現(xiàn)類似于:
function accumulate(first, last, init): -> type while first <> last: init := init + [first] ++first return init
形如 accumulate(begin, end, value, fun)
,表示 [begin, end)
從 value
開(kāi)始,對(duì) fun
函數(shù)執(zhí)行。
實(shí)現(xiàn)類似于:
function accumulate(first, last, init, op): -> type while first <> last: init := op(init, [first]) ++first return init
std::partial_sum
記憶方法:前綴那一部分求和
形如:partial_sum(begin, end, dist)
,表示 [begin, end)
的前綴和放在 dist
開(kāi)始的位置,返回終止迭代器。
實(shí)現(xiàn)類似于:
function partial_sum(first, last, d_first): -> iterator if first == last: return d_first [d_first] := [first] sum := [first] while ++first <> last: sum := sum + [first] [++d_first] := sum return ++d_first
形如:partial_sum(begin, end, dist)
,表示求 [begin, end)
的 fun
函數(shù)前綴,放在 dist
開(kāi)始的位置,返回終止迭代器。
實(shí)現(xiàn)類似于:
function partial_sum(first, last, d_first, op): -> iterator if first == last: return d_first sum := [first] [d_first] := sum while ++first <> last: sum := op(sum, [first]) [++d_first] := sum return ++d_first
std::adjacent_difference
記憶方法:adjacent-相鄰的,difference-差值。
形如:adjacent_difference(begin, end, dist)
,表示 [begin, end)
對(duì)相鄰兩項(xiàng)的差值,放在 dist + 1
開(kāi)始的位置,返回終止迭代器。
實(shí)現(xiàn)類似于:
function adjacent_difference(first, last, d_first): -> iterator if first == last: return d_first acc := [first] [d_first] := acc while ++first <> last: val := [first] [++d_first] := val - acc acc := val return ++d_first
形如:adjacent_difference(begin, end, dist, op)
,表示 [begin, end)
對(duì)相鄰兩項(xiàng)的 op
函數(shù)值,放在 dist + 1
開(kāi)始的位置,返回終止迭代器。
實(shí)現(xiàn)類似于:
function adjacent_difference(first, last, d_first): -> iterator if first == last: return d_first acc := [first] [d_first] := acc while ++first <> last: val := [first] [++d_first] := op(val, acc) acc := val return ++d_first
到此這篇關(guān)于C++ 中 <iterator> <functional> <numeric> 庫(kù)好用的函數(shù)的文章就介紹到這了,更多相關(guān)C++ <iterator> <functional> <numeric> 庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++20 統(tǒng)一容器擦除:std::erase 和 std::eraseif的實(shí)現(xiàn)
本文主要介紹了C++20 統(tǒng)一容器擦除:std::erase 和 std::erase_if的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04C++中可以接受任意多個(gè)參數(shù)的函數(shù)定義方法(詳解)
下面小編就為大家?guī)?lái)一篇C++中可以接受任意多個(gè)參數(shù)的函數(shù)定義方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10對(duì)C++默認(rèn)構(gòu)造函數(shù)的一點(diǎn)重要說(shuō)明
下面小編就為大家?guī)?lái)一篇對(duì)C++默認(rèn)構(gòu)造函數(shù)的一點(diǎn)重要說(shuō)明。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12C語(yǔ)言結(jié)構(gòu)體成員賦值的深拷貝與淺拷貝詳解
C語(yǔ)言中的淺拷貝是指在拷貝過(guò)程中,對(duì)于指針型成員變量只拷貝指針本身,而不拷貝指針?biāo)赶虻哪繕?biāo),它按字節(jié)復(fù)制的。深拷貝除了拷貝其成員本身的值之外,還拷貝成員指向的動(dòng)態(tài)內(nèi)存區(qū)域內(nèi)容。本文將通過(guò)示例和大家詳細(xì)說(shuō)說(shuō)C語(yǔ)言的深拷貝與淺拷貝,希望對(duì)你有所幫助2022-09-09