我有一个结构,例如这个:
struct TMyStruct {
int v1;
std::string abc;
TMyStruct() { Init(); }
void Init() {
v1 = 1;
abc = "text";
}
}
std::vector<TMyStruct> ms;
ms.push_back(TMyStruct());
// ... etc.
效果很好。
我担心的是-在这种情况下,是否将上述结构使用了更多的内存,因为在矢量中分配了初始化的附加功能(但可能还有其他功能)?还是应该使用不带任何其他功能的结构,例如:
struct TMyStruct {
int v1;
std::string abc;
}
std::vector<TMyStruct> ms;
ms.push_back(TMyStruct());
ms.back().v1 = 1;
ms.back().abc = "text";
// etc...
成员函数不会花费任何额外的内存,除非其中至少有一个被声明为虚拟的,在这种情况下,您将为虚拟内存表支付额外的指针,并为表本身支付一定的内存量。
如果您将更长的字符串分配给abc
,则与没有自定义构造函数的相同结构相比,您的构造函数在内存使用方面会更加昂贵。
最后,与没有构造函数的版本相比,构造函数的运行时开销会更高一些,但实际上不会引起注意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句