Überblick
Beispiele
Schnappschüsse
Vergleiche
Anwendungen
Herunterladen
Documentation
Basar
Status & Fahrplan
Häufig gestellte Fragen
Autoren & Lizenz
Forum
Ultimate++ finanziell unterstützen
Diese Seite durchsuchen
Sprache
Deutsch











SourceForge.net Logo

LazyUpdate

 

Using LazyUpdate for MT correct lazy evaluation

 

 

LazyUpdate.cpp

 

#include <Core/Core.h>

 

using namespace Upp;

 

struct DblSum {

    Vector<double> d;

    mutable double sum;

    LazyUpdate dirty;

 

public:

    void Add(double x) {

        d.Add(x);

        dirty.Invalidate();

    }

 

    double Sum() const {

        if(dirty.BeginUpdate()) {

            Vector<int> o = GetSortOrder(d);

            sum = 0;

            for(int i = 0; i < o.GetCount(); i++)

                sum += d[o[i]];

            dirty.EndUpdate();

        }

        return sum;

    }

};

 

CONSOLE_APP_MAIN

{

    DblSum x;

    x.Add(100);

    for(int i = 0; i < 1000*1000; i++)

        x.Add(1e-10);

    Cout() << x.Sum() << "\n";

}

 

 

 

 

Diese Seite gibt es auch in english, català, čeština, español, euskara, français, română, русский, 中文(简体) und 中文(繁體). Willst du mitmachen?