Я искал и пытался выяснить эту ошибку часами, но безуспешно.Я не могу удалить из вектора, учитывая индекс для удаления.Функция для удаления заданного индекса находится в tuple.cpp, как описано в tuple.h.
tuple.h:
#pragma once
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Tuple {
private:
vector<string> tuVec;
public:
Tuple() {};
string toString() const;
void eraseFromVec(int index) const;
bool operator< (const Tuple &right) const {
string temp = toString();
string temp2 = right.toString();
return temp < temp2;
}
};
tuple.cpp:
#include "tuple.h"
void Tuple::eraseFromVec(int index) const {
tuVec.erase(tuVec.begin() + index);
return;
}
Каждый объект Tuple является членом набора, который является членом класса Relation.
Relation.h:
#pragma once
#include "tuple.h"
#include <iostream>
#include <set>
#include <string>
#include <sstream>
#include <iterator>
using namespace std;
class Relation {
private:
string name;
set<Tuple> tuples;
public:
Relation(string rName, Scheme rScheme);
void addTuple(Tuple newTuple);
};
А вот код, который вызывает функцию стирания:
set<Tuple>::iterator it;
for(it = tuples.begin(); it != tuples.end(); ++it) {
int size = it->tuVec.size() - 1;
int i;
for(i = size; i > -1; --i) {
bool isIn = false;
int j;
int size2 = tempRel.toKeep.size();
for(j = 0; j < size2; ++j) {
if(//condition) {
isIn = true;
}
}
if(!isIn) {
it->eraseFromVec(i);
}
}
}
Вот сообщение об ошибке, которое я получаю: (Я попытался набрать его здесь, но по какой-то причине это не сработало, поэтому я прилагаю его изображение)
Мое сообщение об ошибке
Я надеюсь, что этоне спрашивали раньше.Я часами искал в интернете, пытаясь найти решение, но не смог.Буду признателен за любую помощь.