Salut,
Entre ce que tu dis et les constructeur que cette page indique, j'ai l'impression que le conteneur par défaut de la classe tokenizer semble être plus proche d'une liste chainée (std:: list ) que d'un tableau.
En tout cas, le fait que tu ne puisse pas "simplement" utiliser begin+ XXX semble montrer qu'il ne s'agit pas d'un (équivalent à un) itérateur à accès aléatoire, mais plus surement d'un (équivalent à un) itérateur à accès séquentiel (bi directionnel, ou non).
Je vois dés lors deux possibilités:
Soit tu utilises std:: advance sous une forme proche de
my_tok::const_iterator i = std::advance(tok.begin(),50);
mais le résultat (en terme de performances) sera identique à ta boucle,
Soit tu utilise le constructeur de tokenizer qui te permet de spécifier le type du conteneur, sous une forme qui devrait etre proche de
boost::tokenizer<std::vector<std::string> > tok(std::vector<std::string>>() )
(syntaxe à confirmer )
et qui fera en sorte que le (const_)iterator corresponde à un (const_)iterator sur un std::vector, apportant ainsi la possibilité de profiter des accès aléatoires
Partager