小编Col*_*ire的帖子

std :: vector :: erase删除最后一个元素而不是第一个元素

我对C ++相当陌生,但是对向量有疑问。我的目标是在超出边界条件后使用擦除从向量中删除元素。这一切似乎都可以正常工作,只是当我调用擦除时,它将指向第一个元素,但是删除最后一个。基本上,循环将继续迭代并从向量中删除每个元素。我正在使用push_back将Lasers添加到代码中其他位置的矢量上。

std::vector<Laser> m_Lasers;

for (int i = 0; i != m_Lasers.size(); i++)
{
    m_Lasers[i].ClearLaser();

    if (m_Lasers[i].GetX() > m_ScreenWidth || m_Lasers[i].GetX() < 0 || m_Lasers[i].GetY() < 0)
    {
        //erase the vector
        m_Lasers.erase(m_Lasers.begin() + i);
        i--;

    }
}
Run Code Online (Sandbox Code Playgroud)

我的= operator定义为:

void operator=(const Laser& L){};
Run Code Online (Sandbox Code Playgroud)

在我的激光课上。我认为我的问题可能与此有关。

非常感谢您的帮助!

c++ vector erase

3
推荐指数
1
解决办法
1766
查看次数

标签 统计

c++ ×1

erase ×1

vector ×1