热门

最新

红包

立Flag

投票

同城

我的

发布
weixin_73453526
追逐远方的梦
3 年前
trueweixin_73453526

在定义完成后将vector中的元素都置为0的方法:

你的问题是在C++中使用memset函数时出现的。在C++中,你试图使用一个std::vector<char>作为memset的第一个参数,然而memset需要一个void*类型的参数。std::vector<char>并没有自动转换为void*的方法,所以你得到了这个错误。

你可以通过获取std::vector<char>的起始地址来解决这个问题。你可以使用std::vector<char>的.data()方法来获取这个地址。.data()方法返回一个指向vector首元素的指针。

所以你的代码应该修改为:

cpp
std::vector<char> l;
memset(l.data(), 0, sizeof(l));
但是这里需要注意的一点是,sizeof(l)只会返回std::vector<char>对象本身的大小,而不是它所管理的数组的大小。如果你想要将vector的所有元素都设置为0,你应该使用.size()方法获取元素数量,然后乘以元素的大小。例如,如果你的std::vector<char>的元素是char类型,那么你应该这样写:

cpp
std::vector<char> l;
memset(l.data(), 0, l.size() * sizeof(char));

大学生的日常
CSDN App 扫码分享
分享
1
2
打赏
  • 复制链接
  • 举报
下一条:
上热榜啦!http://t.csdn.cn/CsLZLhttp://t.csdn.cn/6hRy9大佬们支持一波呀!
立即登录