我很好奇如何推回矢量的工作原理.我想要一种方法来推回一个元素,然后能够将它在矢量中的位置添加到作为一种地图类型的双数组中.
像这样的东西:
// 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;
Run Code Online (Sandbox Code Playgroud)
这样,当我爆炸炸弹时,我可以检查地图,然后在矢量中有一个ID来处理.每个非炸弹广场都有一个-1.还有,好奇.想象一下,我在矢量中有3个元素.我删除第二个,然后添加另一个.新元素是否与删除的元素位于同一位置?
谢谢!
在你之后push_back
,你可以back
用来获取元素.
Bomb b;
...
bombVec.push_back(b);
Bomb &bref = bombVec.back();
Run Code Online (Sandbox Code Playgroud)
或者你想索引?
强制警告:如果您推入另一个项目,并且容量不够大,则会调整矢量大小.这将使引用无效,并且如果访问引用将导致程序错误.这不是问题(1 )如果你没有调整大小,vector
如果你使用list
而不是(4),那么如果指针存储在(3)中则通过索引(2)访问vector
.
获取索引:
size_t index = bombVec.size();
bombVec.push_back(b);
Run Code Online (Sandbox Code Playgroud)