注意:在我的應用程序中,性能非常關鍵! 爲最壞的情況分配足夠的緩衝區存儲是避免重新分配的要求。我應該使用std :: vector +我自己的size變量嗎?
看看這個,這是怎麼了,我通常使用std ::向量:
//On startup...
unsigned int currVectorSize = 0u;
std::vector<MyStruct> myStructs;
myStructs.resize(...); //Allocate for the worst case scenario!
//Each frame, do this.
currVectorSize = 0u; //Reset vector, very fast.
run algorithm...
//insert X elements in myStructs if condition is met
myStructs[currVectorSize].member0 = ;
myStructs[currVectorSize].member1 = ;
myStructs[currVectorSize].member2 = ;
currVectorSize++;
run another algorithm...
//insert X elements in myStructs if condition is met
myStructs[currVectorSize].member0 = ;
myStructs[currVectorSize].member1 = ;
myStructs[currVectorSize].member2 = ;
currVectorSize++;
Another part of the application uses myStructs and currVectorSize
我有一個決策問題,我應該使用std ::矢量+調整+我自己的尺寸可變或std :: vector + reserve + push_back + clear + size?
我不喜歡讓另一個大小變量浮動,但clear()函數很慢(線性時間)並且push_back函數具有邊界檢查的開銷。我需要在每幀不變的時間重置大小變量,而不調用任何析構函數並以線性時間運行。 結論:我不想破壞我的舊數據,我只需要在每一幀重置當前大小/當前數字插入的元素變量。
'清除()'應該是恆定的時間,如果你的對象是微不足道的。這聽起來像你已經知道什麼是最高性能的(儘管一定要對它進行描述!),所以如果你爲速度/性能進行優化,你已經知道你的答案是什麼。 – Cornstalks
好的,我想這是針對這個特定情況的最好方法。關於清除功能:是的,它應該是POD類型不變的,但不同的編譯器......你不知道...... – karl88