gpt4 book ai didi

c++ - 在 C++ 中声明 vector 和集合

转载 作者:太空狗 更新时间:2023-10-29 23:40:57 25 4
gpt4 key购买 nike

这是我第一次在 C++ 中使用 STL 容器,在 Google 中看到不同的示例时,我注意到 vector 和集合的声明方式有些问题。

如果你有一个类 A 并且你想将这些元素存储在一个 vector 中,你可以使用一个指向 A 对象的指针(如下所示)。而对于集合,您在声明中使用实际对象。我想知道是否有这样做的特殊原因,或者它只是发生在我看到的例子中。

vector<*A> cont1;
set<A> cont2;

最佳答案

在大多数情况下,您最终会使用具有自动存储持续时间的对象容器而不是指针/智能指针,因为这样的容器将为您处理丑陋的内存管理。

简单 std::vector<A>在大多数情况下应该足够了。这些是非常罕见的情况,需要使用 std::vector<A*>反而。这种情况的一个示例可能是在使用此容器的元素时需要实现运行时多态性。另一个示例可能是由于复制 A 时可能出现的性能问题而使用指针。价格昂贵。另一个原因可能是避免对象切片

除非您有充分的理由使用指针容器,否则最好始终使用对象容器。即使您需要保存指针,也可以使用智能指针

相关问题:
How to avoid memory leaks when using a vector of pointers to dynamically allocated objects in C++?
C++: Vector of objects vs. vector of pointers to new objects?

关于c++ - 在 C++ 中声明 vector 和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com