
用memset可以清空vector吗?
我知道用clear()可以搞定,但是如果structdata{vector<int>v1,v2;}s[MAX];然后,我用clear的话会操作2*MAX次,是否可以用me...
我知道用clear()可以搞定,但是如果
struct data
{
vector<int> v1,v2;
}s[MAX];
然后,我用clear的话会操作2*MAX次,是否可以用
memse(s,0,sizoef(s));
直接将整个清空? 展开
struct data
{
vector<int> v1,v2;
}s[MAX];
然后,我用clear的话会操作2*MAX次,是否可以用
memse(s,0,sizoef(s));
直接将整个清空? 展开
展开全部
不能
像vector,string这中复杂数据类型不能直接memset, 会破快它的内部结构
像vector,string这中复杂数据类型不能直接memset, 会破快它的内部结构
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定可以啊!我调试过的!而且使用memset的之后!vector中没有任何数据!且不能引用!
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int MAX = 4;
struct data
{
vector<int> v1,v2;
}s[MAX];
int main()
{
s[0].v1.push_back(2);
memset(s,0,sizeof(s));
s[0].v1.push_back(3);//没有这句话是不能引用s[0].v1[0]的
int a = s[0].v1[0];
printf("%d",a);
return 0;
}
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
const int MAX = 4;
struct data
{
vector<int> v1,v2;
}s[MAX];
int main()
{
s[0].v1.push_back(2);
memset(s,0,sizeof(s));
s[0].v1.push_back(3);//没有这句话是不能引用s[0].v1[0]的
int a = s[0].v1[0];
printf("%d",a);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询