我有一个'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
,并且没有从SimpleStruct
到int
的转换。您需要将谓词更改为有意义的内容。
另一方面,如果要删除simpleVector[3]
中的元素,则只需
simpleVector.erase(simpleVector.begin() + 3);