gpt4 book ai didi

c++ - 指针 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:42 24 4
gpt4 key购买 nike

如果我在类头中有这样的定义:

vector<baddie*> baddies;

然后我在构造函数中初始化如下:

Class::Class(vector<baddie*> input)
{
baddies = input;
}

我最终会得到什么?有两组指向对象的指针的两个 vector ?

简单地指向原始 vector 会更好吗?这可能吗?

或者在类中保存一个指针引用 vector 以避免重复指针会更好吗?访问多个类中的对象和对象数组的最佳实践是什么?引用?指针?指针引用?提前致谢!

最佳答案

这取决于您要提供的语义。在 C++11 中,您可能想要做的是:

Class::Class( vector<baddie*> input ) : baddies( std::move(input) ) {}

这会将内存从参数中的复制移动到成员,而在 C++03 中,您可能会这样写:

Class::Class( vector<baddie*> const & input ) : baddies( input ) {}

这将使用拷贝初始化 vector 。

请注意,此讨论仅涉及 vector 内容,而不涉及那些 baddie 指针指向的数据。也就是说,在这两种情况下,都会有两个带有指向相同元素的指针的 vector (即内存中每个 baddie 的只有一个拷贝,有两个指向它的指针)。

根据您的应用程序的语义,您可能希望从这个中间浅复制到任一端:执行深复制(即创建新的 baddie 内存中的元素,以便在构造函数完成后原始和拷贝完全不相关)或完全避免应对,并仅存储一个引用/指针,以便两个 vector 完全相同 em>(类内或类外的插入将在类外/类内可见)。

此外,请注意指针 vector ,您需要在销毁 vector 之前手动管理内存。

关于c++ - 指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7738340/

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