【发布时间】:2012-05-30 22:37:45
【问题描述】:
我很好奇推回向量是如何工作的。我想要一种方法来推回一个元素,然后能够将它在向量中的位置添加到用作地图类型的双精度数组中。
类似这样的:
// Create a bomb
Bomb b;
b.currentTime = SDL_GetTicks();
b.explodeTime = SDL_GetTicks() + 3000;
b.owner = player;
b.power = 2;
b.x = x;
b.y = y;
bombVec.push_back(b);
bombs[y][x] = THIS_IS_WHAT_I_WANT;
这样当我引爆炸弹时,我可以查看地图然后在向量中有一个ID来处理。每个非炸弹方块都会有一个-1。另外,只是好奇。想象一下,我在一个向量中有 3 个元素。我删除第二个,然后添加另一个。新元素是否与删除的元素位于同一位置?
谢谢!
【问题讨论】:
-
从向量中删除不是一个好主意。它需要移动所有元素。不,它不会被插入到另一个被删除的地方,但总是在数组的末尾。你可能想看看
list -
@StevenBurnap,这是最后一个元素的迭代器,而不是最后一个元素本身。
*bombVec.rbegin()或bombVec.back()将是最后一个元素。使用它的索引是bombVec[bombVec.size()-1] -
当然你可以从向量中删除……这没有什么问题。如果您永远无法从中删除任何内容,那将是一种非常无用的数据类型!现在,如果您正在研究一种需要非常高效的算法,那么对向量进行大量添加/删除调用是一个坏主意……因为是的,删除需要移动其他元素。但是从向量中删除对象绝对没有错。
-
一个similar question有更多答案