2011-07-10 39 views
0

是一個bools數組也是「優化的」,就像一個vector<bool>是?我想打的真或假的陣列,但我也不想的問題,一些與vector<bool>數組中的顯示,如上網速度慢倍C++中的Bool數組問題

+0

你究竟需要什麼?內存高效存儲?快速?疏?可增長?想要像訪問數組一樣訪問它,etcetc .. –

+0

理解它的好方法是通過與debuger一起坐在電腦前。 – Ulterior

+0

我想快速訪問2d數組中的單個值 – calccrypto

回答

1

我認爲C++的默認實現主要是爲了節省空間,而訪問時間可能會受到影響。

如果您需要更快的訪問時間,您可能已經自行實施並犧牲了空間。

+0

但是請注意,在許多情況下,對訪問時間的影響是積極的。較小的表示讓更多適合緩存。 –

+0

Err,不,Kerrek SB的回答是正確的。一個*數組*必須佔用N * sizeof(bool)內存,這意味着* zero *空間優化。 –

7

bool[N]將佔據N次內存sizeof(bool)連續字節。

+0

這將使用每個布爾元素1字節嗎?我也想知道如何使它僅用於每一個,但我想這不是很容易實現的權利? – BugShotGG

+0

@GeoPapas:在'std :: vector '中爲您執行了這樣的優化,由專業人員編寫。 –

+0

感謝您的回覆,我想實現一個快速布爾型數組在cuda中使用。這std :: vector 實現是否足夠快?從我聽說這只是最小的空間管理,但不是最佳的速度。有什麼建議麼?提前致謝! – BugShotGG

2

優化速度是每個單詞一個布爾值,因此它不需要進行掩碼和讀取 - 修改 - 寫入操作。針對空間進行優化的方法是每個字包含32個布爾值,因此您必須更具體地說明「優化」的含義。

+0

已優化,因爲'vector '如何失敗 – calccrypto

+1

經驗豐富的C++人員將會認識到,當您在恐慌報價中使用'優化'時,您的意思是,但最好是明確的。盡我所知,你在問是否有任何'bool'聚合體被打包,或者只是'vector '。你應該直接說出來,而不是暗示它。 – Novelocrat

+0

upvoted它,似乎對我來說很好。 calccrypto,你有沒有低估這個? –