【问题标题】:Is it expensive to create class objects and type vectors?创建类对象和类型向量是否昂贵?
【发布时间】:2016-10-28 23:00:32
【问题描述】:

创建类对象和类型向量是否昂贵? 什么更贵?对象还是向量?为什么反对票?

谢谢

class player player1;
class player player2; 
class player player3;
std::vector<player> playervec1;
std::vector<player> playervec2;
std::vector<player> playervec3;

【问题讨论】:

  • 向量是包含其他对象的对象。
  • 因为这是题外话:“太宽泛了。可能的答案太多,或者好的答案对于这种格式来说太长了。请添加详细信息以缩小答案集或隔离几段就可以回答的问题。”如果player 是一个计算素数的类,那么将其实例化三次会比三个向量更昂贵。如果player 是一个完全空的类,那么初始化其中三个会比初始化三个向量要快,因为后者需要进行一些初始化。
  • 这个问题感觉像是对“什么是向量以及它们如何工作?”的广泛尝试
  • 两者都不太可能特别昂贵(向量当然不是 - 你甚至没有在其中存储任何东西,所以它们只是几个可能设置为 0 的指针,尽管可能包含一些额外的“调试”构建中的数据位)。无论如何,只需编写执行您的程序需要执行的代码,然后担心内存使用和性能如果证明有必要。跨度>

标签: c++ performance object vector


【解决方案1】:

您的问题的问题在于“类对象”和“{anything_at_all} 的向量”是两个完全不同的东西!

你似乎不知道你在说什么。 :-/

在您的 code-sn-p 中,您首先创建三个 player 对象。

然后,您创建三个完全不同且不相关(!)的东西:三个vector对象,其内容恰好是players。

然后,您问一个或另一个“昂贵”?嗯,一个是苹果,另一个是橙子。

“你的方式的错误”只是这两个操作彼此没有可能的关系。 并且,即使他们这样做了,提出的问题也没有真正的意义。 “尽可能高效地完成这两件事是语言编译器的工作......但是,话虽如此,它们彼此绝对完全无关!”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多