列表c++如何编辑特定元素
List C++ how to edit specific element
我对列表有点困惑。见下文:
int ParticleSystemManager::CreateParticleSystem()
{
ParticleSystem* system = new ParticleSystem(Vector3(), Vector3(), 10, 1);
system->SetLifeTime(200);
list<ParticleSystem>::iterator it = particleSystems.begin();
particleSystems.insert(it, *system);
selectedParticleSystem = system;
return 0;
}
我想做的是得到我刚刚创建的粒子系统,将其添加到粒子系统列表中,但我也想将添加的粒子系统存储在一个指针中。我注意到,虽然,当通过列表迭代的内存位置是由selectedParticleSystem指针存储的位置不同。我怎样才能使它们一样呢?更新如下:
void ParticleSystemManager::Update(float elapsedTime)
{
for (std::list<ParticleSystem>::iterator iterator = particleSystems.begin(), end = particleSystems.end(); iterator != end; ++iterator)
{
iterator->Update(elapsedTime);
}
}
我注意到,虽然,当通过列表迭代的内存位置是由selectedparticlessystem指针存储的位置不同。
这是因为std::list::insert
创建了对象的副本。
你的选择是:
-
创建指针的
list
(尽管出于一些原因,您可能希望使用智能指针代替)。 -
获取指向列表内对象的指针,并将其存储。比如:
selectedParticleSystem = &(*particleSystems.insert(it, *system));
如果你这样做,你当然需要
delete
的原始对象,否则你会有内存泄漏。
Oli的回答:如果你使用c++ 11,你可以使用emplace代替,直接在列表中创建新的particlessystem:
particleSystems.emplace(particleSystems.begin(),Vector3(), Vector3(), 10, 1);
particleSystems.begin()->SetLifeTime(200);
selectedParticleSystem=particleSystems.begin();
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 从队列中编辑元素而不将其删除
- c++按元素编辑txt文件
- 编辑2d数组中的元素范围
- 编辑:根据偶数和奇数元素将数组拆分为两个
- 将循环的输出追加到 c++ 中字符串向量的元素 已编辑
- 如何编辑流式处理字符数组中的元素
- 如何在 MFC 中访问主对话框的元素?元素是在可视化编辑器VS 2012中创建的
- c++编辑char* argv[]中的元素
- 列表c++如何编辑特定元素