为了账号安全,请及时绑定邮箱和手机立即绑定

如何用C ++中的new运算符初始化内存?

如何用C ++中的new运算符初始化内存?

C++
心有法竹 2019-11-05 15:58:57
我才刚刚开始使用C ++,我想养成一些好习惯。如果我刚刚int用new运算符分配了一个类型数组,如何将它们全部初始化为0而又不自己遍历它们呢?我应该使用memset吗?有没有一种“ C ++”的方式来做到这一点?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

假设您确实确实想要一个数组而不是std :: vector,那么“ C ++方式”就是这样


#include <algorithm> 


int* array = new int[n]; // Assuming "n" is a pre-existing variable


std::fill_n(array, n, 0); 

但是请注意,实际上,这实际上仍是一个将每个元素分配为0的循环(实际上没有其他方法可以使用,除非有硬件级别的支持的特殊体系结构)。


查看完整回答
反对 回复 2019-11-05
?
偶然的你

TA贡献1841条经验 获得超3个赞

分配固有类型数组的方法有很多,所有这些方法都是正确的,尽管选择哪种方法取决于...


手动初始化循环中的所有元素


int* p = new int[10];

for (int i = 0; i < 10; i++)

{

    p[i] = 0;

}

使用std::memset功能<cstring>


int* p = new int[10];

std::memset(p, 0, 10);

使用std::fill_n来自<algorithm>


int* p = new int[10];

std::fill_n(p, 10, 0);

使用std::vector容器


std::vector<int> v(10); // elements zero'ed

如果C ++ 0x可用,则使用初始化程序列表功能


int a[] = { 1, 2, 3 }; // 3-element static size array

vector<int> v = { 1, 2, 3 }; // 3-element array but vector is resizeable in runtime


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信