namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:equispaced_values

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

howto:equispaced_values [2015-06-28 16:55] (aktuell)
Zeile 1: Zeile 1:
 +====== Gleichabständige Werte im Intervall [a,b] erzeugen ======
 +
 +===== Aufgabe =====
 +Erzeuge in einer Schleife n+1 Werte $x_i$ im Intervall $[a,b]$ eines nichtganzzahligen Grundbereichs D.
 +
 +===== handgeschrieben =====
 +<code cpp>
 +auto dx = (b-a)/n;
 +for (int i = 0; i <= n; ++i)
 +{
 +    auto x = a + i * dx;
 +    // ...    ​
 +}
 +</​code>​
 +
 +===== range-based for =====
 +mit Headerdatei [[https://​bitbucket.org/​dozric/​looprange/​|loop.h]]:​
 +<code cpp>
 +#include "​loop.h"​
 +// ...
 +
 +for (auto x : loop::​linspace(a,​ b, n))
 +{
 +    // ...  ​
 +}
 +</​code>​
 +
 +mit Bibliothek [[https://​github.com/​ryanhaining/​cppitertools|cppitertools]]:​
 +<code cpp>
 +#include "​cppitertools/​itertools.hpp"​
 +// ...
 +
 +auto dx = (b-a)/n;
 +for (auto x : iter::​range(a,​ b + dx/2, dx)) { /* ... */ }
 +{
 +    // ...  ​
 +}
 +</​code>​
 +mit [[http://​www.boost.org|Boost]]-Bibliothek:​
 +<code cpp>
 +#include <​boost/​range/​irange.hpp>​
 +#include <​boost/​range/​adaptors.hpp>​
 +// ...
 +
 +for (auto x : boost::​irange(0,​ n + 1) | boost::​adaptors::​transformed([a,​ dx = (b-a)/​n](int i) { return a + i*dx; }))
 +{
 +    // ...  ​
 +}
 +</​code>​
 +
  
howto/equispaced_values.txt · Zuletzt geändert: 2015-06-28 16:55 (Externe Bearbeitung)