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

我才刚刚开始使用C ++,我想养成一些好习惯。如果我刚刚intnew运算符分配了一个类型数组,如何将它们全部初始化为0而又不自己遍历它们呢?我应该使用memset吗?有没有一种“ C ++”的方式来做到这一点?



心有法竹
浏览 413回答 3
3回答

MMTTMM

假设您确实确实想要一个数组而不是std :: vector,那么“ C ++方式”就是这样#include <algorithm>&nbsp;int* array = new int[n]; // Assuming "n" is a pre-existing variablestd::fill_n(array, n, 0);&nbsp;但是请注意,实际上,这实际上仍是一个将每个元素分配为0的循环(实际上没有其他方法可以使用,除非有硬件级别的支持的特殊体系结构)。

偶然的你

分配固有类型数组的方法有很多,所有这些方法都是正确的,尽管选择哪种方法取决于...手动初始化循环中的所有元素int* p = new int[10];for (int i = 0; i < 10; i++){&nbsp; &nbsp; 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 arrayvector<int> v = { 1, 2, 3 }; // 3-element array but vector is resizeable in runtime
打开App,查看更多内容
随时随地看视频慕课网APP