【发布时间】:2016-02-23 22:14:27
【问题描述】:
我正在尝试解析 C++ 中的输入文件。在文件的开头,给出了要读取的行数。读完每一行后,我必须创建一个包含行中数据的对象。我在vector<shared_ptr<MyClass>> 之类的向量中保留了指向每个对象的指针。
我想做的是在知道行数后立即为所有对象分配足够的空间。但是,我想如果我对向量使用reserve() 函数,将分配足够的空间来保存指针而不是对象。
- 我应该如何为对象和指针分配空间?
- 如果我想在创建对象时使用
make_shared(),这将如何改变?换句话说,我应该如何为指针和指针管理器分配足够的空间?
【问题讨论】:
-
如果您这样做,您将与
shared_ptr共度美好时光。你为什么要shared_ptr?作业要求? -
为什么不使用
std::string来保存文件数据? -
这不是
shared_ptr的用途。共享指针是允许多个对象共享另一个对象的所有权。这是一种约定,在游戏中拥有皮肤的每个人都使用该对象之前,共享对象不会被删除。这种情况可以通过unique_ptr管理到一个足够宽的适当大小的单个大缓冲区它不会被过早地销毁或shared_ptr到所有拥有类拥有的同一个池中。然后向量可以包含指向缓冲区内数据的原始指针,并且没有人会关心。 -
vector<MyClass>不正是您想要的吗? -
@Mahdi,只要您不执行任何操作来触发向量数据存储的重新分配,就可以为其他用户提供指向向量元素的指针。
标签: c++ memory heap-memory shared-ptr new-operator