从向量中删除结构,解构它
Does removing a struct from a vector, deconstruct it?
我在这里有这个结构和向量
//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());
如果它没有被解构并释放空间,我将如何做到这一点?
是的,当一个元素从向量中删除时,它会被销毁,它所持有的任何资源都应该被释放。 我说"应该"是因为这取决于元素类型的正确实现 - 我们必须假设元素类型的实现使得销毁它不会泄漏任何资源。
在您的特定情况下,Record
是一个包含整数和 std::string
s 的结构,这将按您的预期工作:从向量(或任何其他 STL 容器(中删除Record
将释放整数和字符串使用的内存。
是的。std::vector::erase
所做的是
通过移除的元素数减小容器大小,这些元素将被销毁。
您可以在此处找到参考资料。
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员