將整數數組初始化爲給定值的最快方法是什麼?C++中最快的數組初始化
如果我有字符數組,我可以用memset的:
char a[N];
memset(a, value, N);
我不能這樣做,如果數組類型memset的=字符和值= 0或-1:!
int a[N];
memset(a, value, N*sizeof(int)); // INCORRECT!
所以我想知道是否有辦法爲其他數組類型進行類似的內存初始化。
將整數數組初始化爲給定值的最快方法是什麼?C++中最快的數組初始化
如果我有字符數組,我可以用memset的:
char a[N];
memset(a, value, N);
我不能這樣做,如果數組類型memset的=字符和值= 0或-1:!
int a[N];
memset(a, value, N*sizeof(int)); // INCORRECT!
所以我想知道是否有辦法爲其他數組類型進行類似的內存初始化。
不可能有什麼比集合初始化速度快:
int x = {1,2,3,4,5,6};
如果你想要的一切初始化零,那麼你可以利用語法來初始化整個數組:
int x [50] = {};
這是不同的比:
int x[50];
因爲當你指定一個初始值設定項時,未初始化的元素會被初始化。如果您不指定初始化程序,那麼這些元素是未初始化的。
僅僅因爲不可能有比int x[] = {....}
更快的方法,所以其他方法不一定是慢的。您需要在您的實際平臺上以發佈模式進行配置,以便確切知道。
你可以memset任何類型的對象/原語。畢竟一切都存儲在內存中。
這就是說,你必須瞭解你的編譯器和處理器如何存儲你想要預測的結果。如果做錯了,這是非常不便攜和危險的。
現代桌面處理器的很多性能取決於您所引用的對象是否在緩存中。所以很難說它是否會更快。所有其他事情都可能會更快。
'int x [] = {1,2,3,4}'。 –
最快的方法?在你的代碼中有一個數據塊(在它之前有一個跳轉語句),並將你的數組指向它。但嚴重的是,保持標準:使用'std :: fill' – Bathsheba
「我輸入最快的東西」或「最快的速度」是最快的?如果後者是數組初始化速度*真的*是你的代碼中的一個瓶頸?如果是這樣(我覺得這不太可能),你應該重新構建你的代碼。 –