四 c 中的演算法 變動性演算法 賦值

2021-08-06 06:34:08 字數 1960 閱讀 9335

stl提供了四個賦值函式:

- fill()

- fill_n()

- generate()

- generate_n()

說明:

1. generate_n()和fill_n()只給指定區間前n個的那個數值賦值。

2. fill()和fill_n()用於給每個元素賦予相同的數值

3. generate()和generate_n()在執行時呼叫函式的子程序或仿函式,產生新值,並賦值給容器中的元素。

分配給定的元素的範圍[first, last)內值為value.

函式模板如下:

void fill(forwardit first, forwardit last, const t& value)

}將乙個值賦給一定數目的元素

函式模板如下:

template

outputit fill_n(outputit first, size count, const t& value)

return first;

}// 【c++11】

template

< class outputit, class size, class t >

outputit fill_n( outputit first, size count, const t& value );

[c++11]定義了返回值,返回最後乙個元素的迭代器。

用generator函式物件生成的值,分配範圍[first,last)中每個元素

函式模板為:

void generate(forwardit first, forwardit last, generator g)

}給指定範圍內的前n個元素賦予generator函式物件生成的值。

函式模板:

template

< class outputit, class size, class generator >

void generate_n( outputit first, size count, generator g );

//[c++11]

template

< class outputit, class size, class generator >

outputit generate_n( outputit first, size count, generator g )

return first;

}

【c++11】有了返回值,返回值為最後乙個元素的迭代器

例子:

-------省略----------

size_t n = 4;

vector

vec1(6);

vector

vec2(6);

vector

vec3(6);

vector

vec4(6);

fill(vec1.begin(), vec1.end(), -1);//全部賦值-1

fill_n(vec2.begin(), n, -1);//前n個賦值為-1

generate(vec3.begin(), vec3.end(), std::rand);//全部賦值rand生成的數

generate_n(vec4.begin(), n, std::rand);//前n個賦值為隨機數

-------省略----------

輸出結果為:

vec1: -1   -1   -1   -1   -1   -1

vec2: -1 -1 -1 -1 0 0

vec3: 41 18467 6334 26500 19169 15724

vec4: 11478 29358 26962 24464 0 0

四 c 中的演算法 變動性演算法 轉換

函式宣告 template class inputit,class outputit,class unaryoperation outputit transform inputit first1,inputit last1,outputit d first,unaryoperation unary ...

變動性演算法modifying algorithms

目的 變動內容 注意 目標區間不能是關聯式容器 所有具有單一目標區間的演算法,都返回最後乙個被複製元素的下乙個位置 一。複製 1.outputiterator copy inputiterator sourcebegin,inputiterator sourceend,outputiteratord...

stl演算法解析之非變動性演算法

函式 說明for each 對每個元素執行某操作 count 返回元素個數 count if 返回滿足某一準則 條件 的元素個數 min element 返回最小值元素 以迭代器表示 max element 返回最大值元素 以迭代器表示 find 搜尋等於某值的第乙個元素 find if 搜尋滿足某...