namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


howto:equispaced_values

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

auto dx = (b-a)/n;
for (int i = 0; i <= n; ++i)
{
    auto x = a + i * dx;
    // ...    
}

range-based for

mit Headerdatei loop.h:

#include "loop.h"
// ...
 
for (auto x : loop::linspace(a, b, n))
{
    // ...  
}

mit Bibliothek cppitertools:

#include "cppitertools/itertools.hpp"
// ...
 
auto dx = (b-a)/n;
for (auto x : iter::range(a, b + dx/2, dx)) { /* ... */ }
{
    // ...  
}

mit Boost-Bibliothek:

#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; }))
{
    // ...  
}
howto/equispaced_values.txt · Zuletzt geändert: 2015-06-28 16:55 von rrichter