fill和memset
时间: 2023-10-16 17:31:36 浏览: 93
C++中memset函数用法详解
`fill` 和 `memset` 都用于将指定的内存区域设置为特定的值。它们的区别在于,`fill` 是 C++ 中的一个算法函数,而 `memset` 是 C 标准库中的一个函数。
`fill` 函数的语法如下:
```c++
template<class ForwardIt, class T>
void fill(ForwardIt first, ForwardIt last, const T& value);
```
这个函数将 `[first, last)` 区间内的每个元素都设置为 `value`。例如:
```c++
int arr[5] = {0};
std::fill(std::begin(arr), std::end(arr), 1);
// 现在 arr 中的所有元素都是 1
```
`memset` 函数的语法如下:
```c
void *memset(void *s, int c, size_t n);
```
这个函数将 `s` 指向的内存区域的前 `n` 个字节都设置为 `c`。例如:
```c
int arr[5] = {0};
memset(arr, 1, sizeof(arr));
// 现在 arr 中的所有元素都是 16843009 (即十六进制的 0x01010101)
```
需要注意的是,`memset` 只能设置每个字节的值,而无法针对数组元素进行设置。如果数组元素的类型是比较复杂的结构体或类,那么使用 `fill` 会更加方便和安全。
阅读全文