首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于类内容器使用memset的有关问题

2012-05-21 
关于类内容器使用memset的问题在类内声明private:vectorvectorint array1vectorint array2在构造

关于类内容器使用memset的问题
在类内声明
private:
vector<vector<int>> array1;
vector<int> array2;

在构造函数里写下
for(int i=0; i<N; i++)
{
array1.resize(N);
memset(array1[i], 0, N);
}
memset(array2, 0, N);

在VC2010里会有error C2664: “memset”: 不能将参数 1 从“std::vector<_Ty>”转换为“void *”
怎么回事???

[解决办法]
memset(&array1[1], 0, N);
[解决办法]
vector是STD(标准模板库)类,请使用这个类库提供的函数操作,不要使用c函数直接改写其分配器分配的指针,即使能够成功,也绝不赞成这样使用。
另外,“memset(array1[i], 0, N);”即使语法正确,也大大的有问题,在32bit系统,1个整数所占的空间是4个字节,这条语句按照字面意思理解,是要对N个元素清空,但实际上这样只能对N/4个元素清0.


[解决办法]
resize已经初始化0了
[解决办法]
太可怕了。。。这是C++,楼主。

热点排行
Bad Request.