亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用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 關注
  • 426 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號