Est-il C++ équivalent en python Xrange générateur dans la STL ou coup de pouce?
xrange génère essentiellement nombre incrémenté à chaque appel à ++ opérateur. le constructeur est comme ceci:
xrange(first, last, increment)
espérais faire quelque chose comme ceci à l'aide de boost pour chaque:
foreach(int i, xrange(N))
I. suis conscient de la boucle for. à mon avis, ils sont trop passe-partout.
Merci
mes raisons:
ma principale raison de vouloir le faire c'est parce que je utiliser la parole en texte logiciel et de la programmation, de la boucle de façon habituelle est difficile, même si l'aide de la complétion de code. Il est beaucoup plus efficace d'avoir prononçable constructions.
de nombreuses boucles commencent à zéro et d'incrément par un, ce qui est par défaut de gamme. - Je trouver python construire plus intuitive
for(int i = 0; i < N; ++i)
foreach(int i, range(N))
les fonctions qui ont besoin de prendre de gamme comme argument:
Function(int start, int and, int inc);
function(xrange r);
Je comprends les différences entre les langues, toutefois si l'une de construire en python est très utile pour moi et peut être mis en œuvre de manière efficace en C++, je ne vois pas une raison de ne pas l'utiliser. Pour chaque construction est étrangère à la C++ cependant les gens à l'utiliser.
J'ai mis ma mise en œuvre au bas de la page ainsi l'exemple d'utilisation.
dans mon domaine, je travaille avec des tableaux multidimensionnels, souvent tenseur de rang 4. je voudrais donc souvent jusqu'à la fin avec 4 boucles imbriquées avec les différentes gammes/incréments de calculer la normalisation, index, etc. ceux qui ne sont pas nécessairement les performances des boucles, et je suis plus préoccupé par la justesse de la lisibilité et de la capacité à modifier.
par exemple
int function(int ifirst, int ilast, int jfirst, int jlast, ...);
versus
int function(range irange, range jrange, ...);
Ci-dessus, si différents strids sont nécessaires, vous devez passer plus de variables, de modifier les boucles, etc. finalement, vous vous retrouvez avec une masse d'entiers/près de boucles identiques.
foreach et plage de résoudre mon problème exactement. la familiarité à la moyenne programmeur C++ n'est pas sur ma liste de préoccupations - domaine du problème est assez obscure, il y a beaucoup de méta-programmation, l'ESS intrinsèque, le code généré.