【发布时间】:2015-06-29 11:26:47
【问题描述】:
#include <iostream>
#include <array>
#include <cstring>
using namespace std;
int main ()
{
array<int,5> A ;
memset(A,0,sizeof A);
for(int i=0;i < 5;i++){
cout<<A[i]<<" ";
}
return 0;
}
运行程序时出现编译错误。
但是当我使用int A[5] 而不是array<int,5> A 时,memset 效果很好。为什么 memset 不能与容器数组一起使用,因为这两种方法都用于定义固定大小的数组?
【问题讨论】:
-
为什么不直接使用
array<int, 5> A = {};/int A[5] = {};? -
不要在非 POD 类型上使用
memset -
什么是非 POD 类型
-
非 POD 类型:具有构造函数的类型
-
@CoryKramer:
std::array的大部分意义在于它是一种 POD 类型。不过,同意memset在这里是不必要的,应该避免。