我想在 C++ 中创建一个引用列表或映射,它会在销毁时自动删除其元素。这是一个展示这个想法的结构。
class Foo;
class Bar
{
Foo foo;
};
void main(void)
{
std::vector<Foo> foos;
{
Bar bar;
foos.push_back(bar.foo);
// foos[0] should be the same reference as bar.foo
}
// bar is now destructed
// foos.size() should be 0
}
我的代码有两个问题。当push_back()
使用 std::vector 调用时,它会创建 Foo 对象的副本。这将是不可接受的,因为 的元素foos
应该反映对 进行的任何更改bar.foo
。其次,即使foos
向量可以存储引用,Foo 对象在离开创建的范围后也不会从列表中删除bar
。理想情况下,我希望 Foo 引用foos
在其销毁时被删除。
在我实施自己的解决方案之前,我很想知道提供此解决方案的任何第三方库(可能是 Boost 吗?),或者我应该为此使用的任何适当技术或策略。谢谢!