Tôi có một biến thành viên lớp như thế này:Làm thế nào để phát hành std :: vector nếu không có bộ nhớ heap
vector<vector<int> > m_stacks;
Khi tôi cư nó, tôi làm như thế này:
vector<int> v;
v.push_back(1);
v.push_back(2);
m_stacks.push_back(v);
vector<int> v2;
v2.push_back(1);
v2.push_back(2);
m_stacks.push_back(v2);
Bây giờ Tôi tự hỏi những gì tôi nên làm trong destructor lớp để phát hành m_stacks
. Tôi không phân bổ bộ nhớ heap cho nó, vì vậy tôi đang đấu tranh nếu tôi thực sự cần phải làm bất cứ điều gì. Cuối cùng tôi đưa ra điều này -
vector<vector<int> >::iterator itr = m_stacks.begin();
for (; itr != m_stacks.end(); ++itr) {
itr->clear();
}
Tôi nghĩ rằng đây là điều tôi cần làm nhất, tôi không cần gọi số m_stacks.clear()
. Lý do là destructor của vector có thể tự động giải phóng bộ nhớ. Nhưng tôi vẫn cần mã trên mặc dù, lý do là destructor của vector không gọi destructor của phần tử của nó.
Bạn có thể xác nhận cuộc gọi của mình không?