第一次发布在这里,这让我疯狂!我无法很好地解释它,所以我会尝试举个例子。C++大矢量搜索项目
我试图在非常大的(100k)向量中检索一个元素来清除它。通过它将需要年龄...因此,我试过这个:
这是我的列表的一个小例子。它存储在我的单例粒子发射器类中。
vector<Particle> particles;
particles.reserve(100);
这是我颗粒的剥离版本
class Particle
{
Particle:
~Particle:
void Delete
{
int listNum = (this - &particles[0]);
particles.erase(particles.begin+listNum);
}
};
这工作得很好,所有的,但我不想保存在堆栈的每一个粒子,所以我想改变这个
vector<Particle> particles;
到
vector<Particle*> particles;
现在我的问题:如果矢量由粒子指针组成,是否仍然可以从列表中删除和擦除粒子?
我不确定我是否清楚我的问题,但我希望你能理解!
或者如果有人知道更好的性能明智的解决方案,我想听听它!
在此先感谢!
你的'粒子'类不应该知道什么容器持有它。 – chris
粒子有多大?如果复制构造函数的代价很高,那么你应该把它作为指针存储,但是使用一个指针容器(比如'boost :: ptr_vector'),并且我同意克里斯的观点,将容器的知识传授给这个类并不是一个好主意... – Nim
另外,为了减少搜索时间,可能是你可以有一个排序的向量? – Nim