我有一个元组的向量,其中包含成员j、k和l。我正在尝试调整擦除-移除惯用法,使得如果.k成员的值满足某个条件,我可以删除整个元组。
我尝试使用标准的.erase(removeif())方法,其中谓词引用了元组成员位置,但被告知所涉及的向量类没有"k"成员。
vec_list_iter_exp_out.erase(
std::remove_if(
vec_list_iter_exp_out.begin(),
vec_list_iter_exp_out.end(),
vec_list_iter_exp_out.k < 33), vec_list_iter_exp_out.end());
假如vec_list_iter_exp_out包含以下假设值:
vec_list_iter_exp_out[0] = 5, 22, 9
vec_list_iter_exp_out[1] = 12, 31, 54
vec_list_iter_exp_out[2] = 17, 42, 0
vec_list_iter_exp_out[3] = 253, 3, 5
vec_list_iter_exp_out[4] = 65, 110, 24
vec_list_iter_exp_out[2]和vec_list_iter_exp_out[4]的全部内容将被移除,vec_list_iter_exp_out将仅包含以下内容:
vec_list_iter_exp_out[0] = 5, 22, 9
vec_list_iter_exp_out[1] = 12, 31, 54
vec_list_iter_exp_out[2] = 253, 3, 5
相反,我收到了上述的编译错误。
任何帮助将不胜感激!
编辑:按要求提供有关向量的定义。
struct TriStore
{
double j,k,l;
};
std::vector<TriStore> vec_list_iter_exp_out;
并添加插入片段的代码(显然参考了其他函数等内容,但这会占用大量空间)
for(int z = 1; z <= iters; z++)
{
vec_iters.push_back(vec_list_iter_exp_out.size());
for(int i = vec_iters[z-1]; i < vec_iters[z]; i++)
{
if(vec_list_iter_exp_out[i].k < kk)
{
triangle_list(vec_list_iter_exp_out[i].j,vec_list_iter_exp_out[i].k,vec_list_iter_exp_out[i].l);
vec_list_iter_exp_out.insert(vec_list_iter_exp_out.end(),vec_tri_list.begin(),vec_tri_list.end());
}
}
}
vec_list_iter_exp_out
的定义,以及插入代码。 - CinCout