我一直在尝试编写一个程序,该程序发现 a 取结构向量中第一个成员的最大值,然后将其与第二个成员的 -1 和 +1 的值一起删除。但是我似乎总是在运行时错误中运行,不知道我在哪里失败或其他任何事情。还在学习向量。
这是我尝试写的,SOM[] 是数组,值成员是 .v,搜索到的成员是 .ref :
sort(SOM.begin(),SOM.end(),my_cmp);
int k= SOM.size();
while(k != 0)
{
if(SOM[k-1].v > 0)
{
result += SOM[k-1].v;
int a = SOM[k-1].ref;
SOM[find_if(SOM.begin(),SOM.end(),[&cm = a](const S& m) -> bool { return (cm-1) == m.ref; }) - SOM.begin()].v = 0;
SOM[find_if(SOM.begin(),SOM.end(),[&cm = a](const S& m) -> bool { return (cm+1) == m.ref; }) - SOM.begin()].v = 0;
SOM[k-1].v = 0;
}
k--;
}
编辑:我已经使用自定义比较功能对向量进行了很好的排序。