PEL-unive / progetto-23-24

Progetto Programmazione e Laboratorio A.A. 2023/2024
14 stars 2 forks source link

Dubbio sul comportamento del leaf iterator nei sotto-tries #40

Closed Simo-1234 closed 1 month ago

Simo-1234 commented 1 month ago

Salve, vorrei un chiarimento sul comportamento del leaf iterator su un caso simile a quello menzionato qui: https://github.com/PEL-unive/progetto-23-24/blob/f92a2963eb41d91153f89b3ec9e58e0261618004/README.md?plain=1#L371C1-L382C1.

Prendendo in considerazione il trie t3 formato solamente dalla prima foglia della figura 1 e facendovi scorrere un leaf iterator it3:

std::vector<char> prefix{ 'a' };
auto t3 = t[prefix];
auto it3 = t3.begin();

auto first = it3.get_leaf();
++it3;
auto second = it3;
  1. first è uguale al trie t3?
  2. A che cosa punta l'iteratore second?
    • alla fine del sotto-trie, quindi second == t3.end(), oppure
    • alla foglia successiva considerando il trie t, quindi second.get_leaf() == t[{ 'b', 'b' }]?
jermp commented 1 month ago

Ciao, il leaf_iterator deve tenere in considerazione i sotto tries. Quindi:

  1. first è uguale al trie t3?

sì, perchè t3 è già una foglia.

  1. A che cosa punta l'iteratore second?

all fine del sotto trie perchè è una copia di un iteratore istanziato su t3, che quindi non ha "visibilità" di t.

-Giulio