Tôi có một vector được khai báo là một biến toàn cầu mà tôi cần để có thể sử dụng lại. Ví dụ, tôi đang đọc nhiều tệp dữ liệu, phân tích cú pháp dữ liệu để tạo các đối tượng sau đó được lưu trữ trong một vectơ.Sử dụng lại một vector trong C++
vector<Object> objVector(100);
void main()
{
while(THERE_ARE_MORE_FILES_TO_READ)
{
// Pseudocode
ReadFile();
ParseFileIntoVector();
ProcessObjectsInVector();
/* Here I want to 'reset' the vector to 100 empty objects again */
}
}
Tôi có thể thiết lập lại các vector là "objVector vector (100)" vì nó đã được ban đầu được phân bổ trên stack? Nếu tôi làm "objVector.clear()", nó loại bỏ tất cả 100 đối tượng và tôi sẽ có một vectơ có kích thước bằng 0. Tôi cần kích thước của nó là 100 ở đầu mỗi vòng lặp.
Bạn có cần giữ đối tượng hoặc bạn muốn đặt lại chúng về trạng thái được tạo mặc định không? – Macke
Trong ví dụ của bạn, objVector được cấp phát tĩnh. Nó không được cấp phát trên ngăn xếp. – Alan
Kiểu trả về của hàm chính của bạn không chính xác. Trong C và C++ chính phải luôn luôn trả về int (nhưng nếu bạn không thực sự trả về bất cứ điều gì, C++ và C99 sẽ trả về 0 cho bạn tự động). – Tronic