1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
#include "trie.hpp"
#include <iostream>

template <typename Object>
struct Visitor
{
    void
    operator()(const Object &object) const
    {
        std::cout << "visit object:" << object << std::endl;
    }
};

template <typename Object>
void
visit(const Object &object)
{
    std::cout << "visit function:" << object << std::endl;
}

int
main()
{
    Trie<double>    trie_;

    trie_.insert("Lehn"42);
    trie_.insert("Fo"123);
    trie_.insert("Lehr"666);
    trie_.insert("Lehr"667);
    trie_.insert("Lehr"668);

    Trie<double>    trie;

    trie = trie_;

    std::cout << "visiting:" << std::endl;
    trie.visit("Le", Visitor<double>());
    std::cout << "visiting:" << std::endl;
    trie.visit("", Visitor<double>());
    trie.visit("", visit<double>);
}