假设我有一些包含许多数据成员的类A。当我创建此类std::vector<A> vec;
的向量并调用vec.push_back(A(...));
时,有时向量将不得不重新分配内存并将所有先前的对象移动到新的内存中。这将复制许多A对象。我发现的解决方案是存储指向在堆上分配的A对象的指针。这样可以使向量复制4个字节的整数,这是可以的,但是我从未见过有人这样做,所以我不确定这是否是正确的方法。
这是标准吗?
答案 0 :(得分:1)
这是一个简单的示例,用于说明std::vector<A>
与std::vector<A *>
的普遍性。我g愧llvm 6.0.0
,因为它被许多人认为是CPP开发的领先标准。结果如下:
$ grep -rn "vector<.*\*" | wc -l
613
$ grep -rn "vector<.*" | wc -l
1707
所以我想这个例子让您了解了哪种口味更常见。 当然,这仅是一个代码库的示例...