我有一个'simpleVector'的向量:

struct SimpleStruct
{
    XMFLOAT3 hello;
    XMFLOAT3 hi;
};

std::vector <SimpleStruct>      simpleVector(0);


我试图删除一个元素,例如simpleVector [3],然后将其余元素向下移动一个以删除空格。

simpleVector.erase(std::remove_if(simpleVector.begin(), simpleVector.end(),
    [](int i) { return i == 3; }), simpleVector.end());



  但是,我收到此错误:无法从中转换参数1
  'SimpleStruct'到'int'。


如果这很明显,请原谅我,我是C ++的新手。如何解决此问题?

最佳答案

传递给std::remove_if的一元谓词必须能够接受SimpleStruct。其目的是评估是否应“删除”向量的每个元素。
您的谓词接受int,并且没有从SimpleStructint的转换。您需要将谓词更改为有意义的内容。

另一方面,如果要删除simpleVector[3]中的元素,则只需

simpleVector.erase(simpleVector.begin() + 3);

10-08 09:17