头文件为 numeric
#include <numeric>
using namespace std;
语法和 sort
/ lower_bound
/ upper_bound
等差不多,都是前闭后开的原则。
iota(A+x,A+y,z) :表示将 A A A 数组的 [ x , y ) [x,y) [x,y) 区间进行填充,从 z z z 开始,每填一个 z + 1 z+1 z+1。即 A [ x , y ) ↔ [ z ∼ z + y − x ) A[x,y)\leftrightarrow [z\sim z+y-x) A[x,y)↔[z∼z+y−x)。
#include <cstdio>
#include <numeric>
using namespace std;
int a[100];
int main() {
iota( a + 5, a + 10 + 1, 2 );
for( int i = 0;i <= 20;i ++ )
printf( "%d ", a[i] );
return 0;
}
//output:0 0 0 0 0 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 0
换言之,这个等价于一个 for
循环。
for( int i = x;i < y;i ++, z ++ ) A[i] = z;