memset函数:
#include <string.h>void *memset( void *buffer, int ch, size_t count );
功能是:
拷贝 ch 到 buffer 从头开始的 count 个字符里,并返回buffer指针。 可以将一段内存初始化为某个值。
例如:memset( the_array, '\0', sizeof(the_array) );
有一点特别注意的是:memset按照字节初始化,就是说如果声明的数组是int arr[100];
,每个元素都为int型,占4字节,但是memset仍会一个字节一个字节的赋值。
比如memset(arr,1,100);
,1的十六进制是0x01,那么数组arr中的每个元素就变成了0x01010101
。转化成十进制就是16843009。
不过赋值为0和-1这两个数并不受影响,因为0的十六进制是0x00
,-1的十六进制是0xFF
。这两个数在内存中不论用几个字节表示都是一样的(全0或全F)。
所以memset适合于char类型的数组。
fill函数:
如果需要在一个int或其他类型上的数组进行赋值,可以使用fill函数。头文件是#include<algorithm>
。
功能是:
将一个区间内所有元素都赋以val的值。可以有以下两种用法
fill(vec.begin(), vec.end(), val);
fill(arr,arr+n,val);
如果需要赋一个最大值,可以包含一个头文件:#include<climits>
然后使用fill(arr,arr+n,INT_MAX);