std::vector<CustomClass *> whatever(20000);
หรือ:
std::vector<CustomClass *> whatever;
whatever.reserve(20000);
อดีตกำหนดขนาดจริงของอาร์เรย์นั่นคือทำให้เป็นเวกเตอร์ 20000 พอยน์เตอร์ หลังปล่อยให้เวกเตอร์ว่างเปล่า แต่สงวนพื้นที่ไว้สำหรับ 20000 พอยน์เตอร์ดังนั้นคุณสามารถแทรก (มากถึง) จำนวนมากได้โดยไม่ต้องจัดสรรใหม่
อย่างน้อยก็จากประสบการณ์ของฉันมันค่อนข้างผิดปกติสำหรับสิ่งเหล่านี้ที่จะสร้างความแตกต่างอย่างมากในด้านประสิทธิภาพ - แต่อาจส่งผลต่อความถูกต้องในบางสถานการณ์ โดยเฉพาะอย่างยิ่งตราบใดที่ไม่มีการจัดสรรใหม่เกิดขึ้นการทำซ้ำในเวกเตอร์จะได้รับการรับรองว่ายังคงถูกต้องและเมื่อคุณกำหนดขนาด / พื้นที่ที่จองไว้แล้วคุณจะรับประกันได้ว่าจะไม่มีการจัดสรรซ้ำตราบใดที่คุณไม่ t เพิ่มขนาดเกินกว่านั้น
std::vector
การอ้างอิงใด ๆขึ้นอยู่กับสิ่งที่เหมาะกับความต้องการของคุณมากกว่า