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]
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)