อัลกอริธึม C++ ของฉันได้รับข้อมูลที่ไม่ทราบขนาด (ตรวจพบอนุภาคบนภาพทีละภาพ และฉันไม่รู้ว่าจะมีการตรวจพบอนุภาคจำนวนเท่าใดก่อนที่อัลกอริธึมนี้จะทำงานเสร็จ) ก่อนอื่นฉันต้องการจัดสรรเช่นอาร์เรย์ที่มีองค์ประกอบ 10,000 รายการและในระหว่างการประมวลผลหากจำเป็นให้จัดสรรองค์ประกอบอีก 10,000 รายการหลายครั้ง
นี่คือสิ่งที่ฉันลอง มันใช้งานไม่ได้:
#include <iostream>
using namespace std;
int main(){
int n = 3;
int m = 3;
float *a = new float[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
float *b = a + 2;
b = new float[3];
b[0] = 4;
b[1] = 5;
cout << a[3] << endl;
}
ผลก็คือ ผมได้ลบอนันต์ แน่นอนว่าฉันสามารถจัดการสิ่งนี้ในอาร์เรย์ที่แตกต่างกัน ฉันสามารถจัดสรรหน่วยความจำจำนวนมากได้เพียงครั้งเดียว ฉันต้องส่งข้อมูลที่ตรวจพบแบบเต็มอาร์เรย์ไปยังฟังก์ชันหลังจากนั้น ด้วยเหตุนี้ ฉันจึงต้องการให้มีอาร์เรย์ขนาดใหญ่หนึ่งชุด
แต่ยังมีวิธีที่จะเพิ่มขนาดของวิธีการจัดสรรแบบไดนามิกของคุณหรือไม่? สิ่งที่ฉันต้องการในตัวอย่างของเล่นคือการเพิ่มจำนวนองค์ประกอบในอาร์เรย์ a
ขึ้น 3 ดังนั้นมันจึงจะมีองค์ประกอบ 6
ใน Matlab เป็นไปได้อย่างแน่นอน แล้ว C++ ล่ะ?
ขอบคุณ
std::vector
เพื่อจุดประสงค์นั้น - คุณไม่จำเป็นต้องกังวลเกี่ยวกับการจัดสรรหน่วยความจำ - person Charles Salvia   schedule 12.03.2015