我在这里使用vector
//Record Structure
struct Record {
std::string date;
std::string name;
int dollars = 0;
int cents = 0;
std::string getCost() {
//Dollars First
std::stringstream dollar;
dollar << dollars;
std::string DOLLAR = dollar.str();
//Cents Second
std::stringstream cent;
cent << cents;
std::string CENT = cent.str();
//Display cents as double zeros
DOLLAR = DOLLAR.length() == 1 ? "0" + DOLLAR : DOLLAR;
CENT = CENT.length() == 1 ? "0" + CENT : CENT;
//Result
std::string result = "$" + DOLLAR + "." + CENT;
//Return
return result;
}
void Constructor(std::string NM, std::string DT, int DOLLAS, int PENNY) {
name = NM;
date = DT;
dollars = DOLLAS;
cents = PENNY;
}
};
//Vector that holds instances of the Record structure
std::vector <Record> Records;
假设我已将实例附加到向量
Record newInstance;
newInstance.Constructor("Name", "Date", 10, 0);
Records.push_back(newInstance);
如果我这样删除它,整个结构会被解构并释放空间吗?
Records.erase(Records.begin());
如果它没有被解构并释放空间,我该怎么做?
答案 0 :(得分:1)
是的,当从向量中删除元素时,它会被销毁,并且应该释放它所拥有的任何资源。我说&#34;应该&#34;因为这取决于元素类型的正确实现 - 我们必须假设元素类型被实现,以便销毁它不会泄漏任何资源。
在您的特定情况下,Record
是一个包含整数和std::string
的结构,这将按预期工作:从向量(或任何其他STL容器)中删除Record
)将释放整数和字符串使用的内存。
答案 1 :(得分:1)