Я работал над программой, которая генерирует FOLLOW каждой переменной в LL (1), и моя реализация основана на том факте, что переменные с одинаковым FOLLOW должны быть в одном наборе.
Итак, я начинаю с набора символов, который выглядит примерно так: {{E}, {B}, {T}, {Y}, {F}}
Предположим, я получил E и B, чтобы иметь то же самое, процедура должна состоять в том, чтобы изменить исходный набор на -
{{E, B}, {T}, {Y}, {F}}
Для этой цели я выбрал структуру данных как std :: set >
Вот мой фрагмент кода для подпрограммы, которая включает в себя удаление других наборов (В данном случае, Я стремлюсь удалить {B} после выполнения объединения {E, B}
set<set<char>> similarSets;
void findSET(char ch)
{
set<set<char>>::iterator it1;
set<char>::iterator it2;
for (it1 = similarSets.begin(); it1 != similarSets.end(); it1++)
{
// (*it1).clear();
// the above line doesn't seem to work
}
}