【发布时间】:2021-02-22 21:23:25
【问题描述】:
-
我希望一个类拥有一个大型数组(至少 100000 个元素)的所有权。
-
我有一个名为
BaseProduct的类(成员有name、price、cost、print()...) -
我有一个类
BasicProductContainer将控制BaseProducts 的数组。 -
我尝试在我的
BasicProductContainer中拥有一个指向数组的共享指针成员:
private:
std::shared_ptr<std::array<BaseProduct, NUMBER_OF_PRODUCTS>> m_ptrArrProductContainer;
我想避免在头文件中定义数组,所以我在.cpp的类构造函数中这样做了:
static std::array<BaseProduct, NUMBER_OF_PRODUCTS> ProductContainer;
BasicProductContainer::BasicProductContainer() {
m_ptrArrProductContainer = std::make_shared<std::array<BaseProduct, NUMBER_OF_PRODUCTS>>(ProductContainer);
}
这“有效”,但我想知道是否有更好的方法?还是更好看的?指向数组的指针是个好主意吗?
【问题讨论】:
-
1M+ 元素的
std::array相当奇怪。确定不想使用std::vector? -
我不清楚你到底在追求什么,但看起来
BasicProductContainer的每个实例都会有自己的ProductContainer副本。 D除非稍后分享进来,否则我看不到shared_ptr的目的。 -
@Justin 数组的大小是固定的,为什么我要使用向量呢?
-
@user4581301
BasicProductContainer的每个实例都应该有自己的容器。我可以考虑unique_ptr -
@Ivan
std::vector使用连续内存缓冲区和恒定时间随机访问
标签: c++ arrays static containers stdarray