2012-03-02 60 views
1

比如我有一個這樣的數組:如何將數組中的所有元素更改爲特定值?

bool log[100000] 

而且我有循環,其中我想設置日誌爲True的所有元素的值。換句話說,我想擦除在循環的每個循環之後所做的所有更改。我怎麼能這樣做?我可以改變不是全部,但我們可以說100個值嗎?

+1

你通常不想用100,000'bool'來浪費堆棧。 – 2012-03-02 17:41:51

+0

好的,這裏的難度在哪裏?即使不是C++的方式,你可以寫一個for循環並做到這一點? – 2012-03-02 17:43:46

回答

5

要使用true填充整個陣列:

std::fill(begin(log), end(log), true); 

要使用true填充第一100個元素:

std::fill(begin(log), begin(log) + 100, true); 

beginend添加在C++ 11;如果您的編譯器和庫不支持它們,請考慮使用std::array<bool, N>代替,其中包含beginend成員函數。無論如何,你真的應該使用std::array模板,因爲它沒有開銷,提供了標準的序列容器接口,並且可以幫助你避免C數組的愚蠢語義。

+0

或者,考慮'std :: vector ',這會將內存佔用減少87%。 – 2012-03-02 17:55:40

+1

@Rob:對於這​​種情況,應該考慮'std :: vector '。應避免使用非容器容器'std :: vector '。 – 2012-03-02 17:56:39

+0

@Rob:'std :: vector'如何減少內存佔用空間..任何指針?謝謝。 – Lazer 2012-03-02 18:57:21

相關問題