У меня есть вектор кортежей с членами 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());
}
}
}