4.3.4  赋值

4.3.4 赋值

STL提供了4种算法,用于给容器赋值。这4种算法分别是fill()、fill_n()、generate()和generate_n()。

fill_n()算法和generate_n()算法只给指定区间的前n个数值赋值。fill()算法和fill_n()算法用于给每个元素赋予相同的数值;generate()算法和generate_n()算法在执行时会调用函数的子进程或仿函数(g),产生新值,并赋值给容器中的元素。其原型如下:

978-7-111-51399-5-Chapter04-71.jpg

978-7-111-51399-5-Chapter04-72.jpg

值得一提的是,fill_n()算法和generate_n()算法均指定了赋值区间的起始位置和赋值元素的个数。详见例4-19。

例4-19

978-7-111-51399-5-Chapter04-73.jpg

例4-19的执行效果如图4-19所示。

978-7-111-51399-5-Chapter04-74.jpg

图4-19 例4-19的执行效果

总结

generate()和generate_n()算法除了可以使用STL提供的函数作为子进程或仿函数(用于产生元素),还可以使用自定义的函数产生新的元素值,甚至可以使用特定的算法产生数值序列。例如,在例4-19中,main()函数最后即产生1个斐波那契数列。