【发布时间】:2023-03-28 06:34:01
【问题描述】:
我想创建一个 指向结构的指针向量
vector<myStruct*> vec
对于向量中的元素,并非所有元素都包含数据。其中一些可能指向NULL。
那么,我是否应该首先在每个元素中通过new 创建空间
for(int i = 0; vec.size() ;i++){
if (thisSpaceIsValid(i))
vec.at(i) = new myStruct;
else
vect.at(i) = NULL;
}
问题来了:
- 如果我为每个元素使用new,它会很慢。我怎样才能加快速度?有没有办法创建我需要的所有空间,自动访问这些空间的指针到向量(vec 这里)?
-如果以后我用delete来释放内存,速度的问题还会困扰我吗?
【问题讨论】:
-
这可能是您了解智能指针的好机会:en.cppreference.com/w/cpp/memory/shared_ptr。如果您使用的是 C++11 之前的编译器,则可以使用与 boost 库相同的功能。
-
"如果我对每个元素都使用 new,它会很慢。" 什么会很慢?初始化向量?使用它?
-
如果你想提高性能,你仍然可以声明
myStruct tab[max],但是空闲内存可能会很微妙 -
如果您担心单独分配,请使用您自己的分配方案...
-
您确定动态内存分配本身的性能是您应该担心的吗?