我不太明白怎么打電話CAtlArray::SetCount。
這是簽名:
bool SetCount(size_t nNewSize, int nGrowBy = - 1);
這是來自檔案的引數解釋:
nNewSize
所需的陣列大小。
nGrowBy
用于確定緩沖區大小的值。值 -1 會導致使用內部計算的值。
因此,假設您有一個當前長度的陣列,并且您想向其中添加另外 7 個單位。你會怎么稱呼SetCount?你得到當前計數,加 7,然后將該數字作為第一個引數傳遞嗎?或者你只是傳遞 7 作為第二個引數——如果是這樣,第一個引數是什么?
uj5u.com熱心網友回復:
引數細節的缺失nGrowBy暗示了微軟的家伙不希望普通程式員使用它。對于正常操作,您可以忽略它并相信默認值 -1 會做正確的事情。
因此,添加多個專案的正確方法是您猜到的:
- 如果手頭沒有,請查找當前尺寸
- 添加要添加的數字或單位
- 并將該值作為第一個引數傳遞
SetCount(為第二個引數保留默認值 -1)
uj5u.com熱心網友回復:
nGrowBy 設定存盤增長策略。
| nGrowBy | 戰略 |
|---|---|
| -1 | 使用最后一組策略。如果未設定,則默認策略為 0。 |
| 0 | 設定至少增加 50% 的存盤空間的默認策略。 |
| >0 | 制定新策略,至少增加存盤量nGrowBy。 |
每次nNewSize大于通過增長策略計算的大小時,nNewSize都使用而不是計算值(這至少在上表中說明)。
在大多數情況下,您應該只使用-1(根本不指定它)。nGrowBy僅當您知道未來陣列大小調整的特殊情況時,提供顯式值才有意義,但即便如此,在大多數情況下,最好只使用SetCount( final_size ).
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/419797.html
標籤:
