我做一個非零值以下:初始化雙陣列
double dVar[100] = { 0.1 };
但是,當我調試,它只把0.1〜DVAR [0]和其餘全部都是0.0;
我只是想避免for循環。
有人可以幫我嗎?
我做一個非零值以下:初始化雙陣列
double dVar[100] = { 0.1 };
但是,當我調試,它只把0.1〜DVAR [0]和其餘全部都是0.0;
我只是想避免for循環。
有人可以幫我嗎?
但是,當我調試時,它只會把0.1的dVar [0]和其餘的都是0.0;
這是預期的行爲。如果初始值設定項包含的元素數少於聚集值(數組),則對其餘元素執行value-initialization,在這種情況下將其設置爲零。
雖然未初始化,以避免明確手工編碼的循環使用std::fill()
:
double dVar[100];
std::fill(std::begin(dVar), std::end(dVar), 0.1);
正如他的回答提出的Olaf Dietsche,從一個數組更改爲std::vector<double>
將允許初始化爲零以外的值。如果std::vector
可以更改大小這一事實是不可取的,並且您的編譯器有一些C++ 14功能,您可能需要考慮使用std::dynarray
。這是不可能改變的dynarray
元素的數量和所有元素可以在初始化爲零以外的值,類似被分配到std::vector
:
std::dynarray<double> dVar(100, 0.1);
這是正常現象。如果您沒有明確初始化數組的所有元素,它們將自動設置爲零。
初始化所有元素0.1
,你可以使用一個std::vector
,並使用一個構造函數顯式初始化
std::vector dVar(100, 0.1);
這將創建100個元素,都設置爲0.1的向量。
謝謝你們,它工作。 –