ฉันกำลังพัฒนาแบบจำลองทางฟิสิกส์และเนื่องจากฉันค่อนข้างใหม่กับการเขียนโปรแกรมฉันยังคงพบปัญหาเมื่อผลิตโปรแกรมขนาดใหญ่ ฉันรู้เกี่ยวกับการจัดสรรและลบหน่วยความจำแบบไดนามิก (ใหม่ / ลบ ฯลฯ ) แต่ฉันต้องการวิธีที่ดีกว่าในการจัดโครงสร้างโปรแกรม
สมมติว่าฉันกำลังจำลองการทดสอบที่ใช้งานมาสองสามวันด้วยอัตราการสุ่มตัวอย่างที่ใหญ่มาก ฉันต้องการจำลองตัวอย่างเป็นพันล้านตัวอย่าง
ในฐานะเวอร์ชั่นที่เรียบง่ายที่สุดเราจะกล่าวว่าโปรแกรมใช้แรงดันไฟฟ้า V [i] และรวมเข้าด้วยกันเป็นห้า:
ie NewV [0] = V [0] + V [1] + V [2] + V [3] + V [4]
NewV [1] = V [1] + V [2] + V [3] + V [4] + V [5]
ดังนั้น NewV [2] = V [2] + V [3] + V [4] + V [5] + V [6] ... และสิ่งนี้จะดำเนินต่อไปเป็นตัวอย่างพันล้านตัวอย่าง
ในท้ายที่สุดฉันจะมี V [0], V [1], ... , V [1000000000] เมื่อแทนที่สิ่งเดียวที่ฉันต้องจัดเก็บสำหรับขั้นตอนต่อไปคือ 5 V สุดท้าย [i] s
ฉันจะลบ / ยกเลิกการจัดสรรส่วนหนึ่งของอาเรย์เพื่อให้หน่วยความจำสามารถใช้งานได้อีกครั้ง (เช่น V [0] หลังจากส่วนแรกของตัวอย่างที่ไม่จำเป็นต้องใช้อีกต่อไป)? มีทางเลือกอื่นในการจัดโครงสร้างของโปรแกรมเช่นนี้หรือไม่?
ฉันเคยได้ยินเกี่ยวกับ malloc / free แต่ได้ยินมาว่าพวกเขาไม่ควรใช้ใน C ++ และมีทางเลือกที่ดีกว่า
ขอบคุณมาก ๆ!
TLDR; จะทำอย่างไรกับส่วนของอาร์เรย์ (แต่ละองค์ประกอบ) ฉันไม่ต้องการอีกต่อไปที่ใช้หน่วยความจำจำนวนมาก?
V
แทนที่จะเป็นอาร์เรย์ใหม่ได้ อย่างไรก็ตามโดยพื้นฐานแล้วฉันคิดว่าปัญหาของคุณอาจอยู่ในอัลกอริธึมหรือโครงสร้างข้อมูลของคุณและเนื่องจากเราไม่มีรายละเอียดใด ๆ จึงเป็นการยากที่จะทราบวิธีการทำอย่างมีประสิทธิภาพ