初始化基本類型
回答
fill_n函數可以是你正在尋找的。它將爲您的數組的n個第一個值分配一個特定的值。
double *aPtr = new double[10];
std::fill_n(aPtr, 10, -1); // Fill the aPtr array with the value -1 for the 10 first values.
我不知道一個具體的方法來直接用聲明中的一個相同的值填充它。
如果u要初始化雙和設定值的陣列,以0 u可以使用:
double* aPtr = (double*)calloc(10,sizeof(double));
如果u想decleration後元件的設定值u可以使用:
double *aPtr = new double[10];
memset(aPtr,value,size);
同樣的問題和你的回答詳細:
問題是在行星C++而不是C –
或'double * aPtr = new double [10]();' –
c&C++ dosn't有內存分配的缺陷,在使用'calloc'後你可以調用aPtr [1 ] = 10.對於C++我鏈接到一個答案 –
可以使用std::fill_n:
std::fill_n(aPtr , 10, -1);
對於這樣小的陣列可以編寫顯式
double *aPtr = new double[10]
{
ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1
};
然而,對於更大的陣列,應使用一些標準的算法,例如std::generate
,std::generate_n
,std::fill
,std::fill_n
,std::for_each
或甚至某種類型的循環。
例如
std::generate(aPtr, aPtr + 10, [value = ex - 1]{ return value; });
或
std::generate_n(aPtr, 10, [value = ex - 1]{ return value; });
或
std::fill(aPtr, aPtr + 10, ex - 1);
或
std::fill_n(aPtr, 10, ex - 1);
或
std::for_each(aPtr, aPtr + 10, [value = ex - 1](auto &x){ x = value; });
如果編譯器不支持初始化捕獲例如,您可以
std::generate(aPtr, aPtr + 10, [=]{ return ex - 1; });
我*認爲*當OP寫「ex -1」他的意思是「例如,-1」 - 我可能是錯誤的,但... –
@PaulR我認爲這不是非常重要。:) –
正確 - 我只是認爲這對讀者來說可能有點困惑。 –
您可以使用統一的初始化初始化基本類型爲零寫。
double *aPtr = new double[10] {}
這將零出創建的數組。您也可以使用「()」而不是「{}」在C++ 03中執行此操作。
但是,這不會將所有元素初始化爲特定值。如果你寫new double[10] {-1.0}
你會得到一個陣列,第一個元素是-1.0
和其他九個 - 0.0
。
您可以使用類似這樣的初始化程序列表指定所有元素,但對於大型數組不可伸縮。相反,我相信在致電new
後使用std::fill_n
或std::fill
是更好更簡單的解決方案。
如果你真的不想有循環(即使在算法中),你可以使用可變參數模板來生成一個初始化列表,但這需要一些工作才能使它正常工作。
- 1. 基本類型的統一初始化?
- 2. 基本類型初始化C++
- 3. 初始化基類
- 4. 初始化內置類型初始化
- 5. 部分初始化基類
- 6. 模板基類初始化
- 7. 拷貝構造函數初始化基本數據類型
- 8. 默認初始化爲C的基本類型是什麼?
- 9. 類型初始化例外
- 10. 無法初始化類型
- 11. 的IntelliTrace:類型初始化
- 12. 初始化Uri類型
- 13. 初始化泛型類
- 14. 初始化對象類型
- 15. 初始化簡單類型
- 16. 無法初始化類型
- 17. 類變量將基類後初始化
- 18. 矢量和原始類型初始化
- 19. 切片類型的初始化方法無法初始化
- 20. C#初始化整型數據類型
- 21. 從抽象類型初始化子類
- 22. 初始化類
- 23. 類初始化
- 24. 類初始化
- 25. 初始化類
- 26. 在派生類初始化列表中初始化模板基類成員類型
- 27. 宅基地初始化問題 - 宅基地已經初始化
- 28. C++:「Field'object_var'必須初始化」在基類
- 29. 初始化是POD的基類struct
- 30. 公共基類的初始化
你的意思是,用特定的相同值初始化數組中的每一個double? – Isuka
是的,先生。這是真的Isuka。 – mintbox
爲什麼不'std :: vector'? – leemes