Suche Datenstruktur



  • Hallo,

    ich suche folgende Datenstruktur:
    sie soll genau Platz für N Objekte (floats oder ints etc) haben. Es werden der Struktur ständig Werte hinzugefügt und wenn die Struktur voll ist, dann soll das neue Datum hinzugefügt werden und das älteste Datum (also das, dessen Hinzufügen am weitesten zurückliegt) gelöscht. Es dürfen sich also NIE mehr als N Objekte in der Struktur befinden und die Objekte in der Struktur sind immer die neuesten.

    Gibt es da schon was fertiges in der STL?



  • pufferfrage schrieb:

    ...Gibt es da schon was fertiges in der STL?

    Fertiges nicht, aber mach das mit einer deque!
    #include <deque> //usw. 😉



  • Da ist wohl eher ein Ringpuffer gefragt. So ganz grob sieht das so aus:

    template <typename T, int N> class Buffer {
    
        T _data[N];
        int _size;
        int _oldest_element;
    
    public:
        Buffer() : _size(0), _oldest_element(0) {}
    
        void insert(T const & e) {
           if (size == N) {
               _data[_oldest_element] = e;
               _oldest_element = (_oldest_element + 1) % N;
           } else {
               _data[_size] = e;
               ++size;
           }
        }
    
        // The oldest element has index 0, the newest one size-1.
        void get(int idx) {
           return _data[(_oldest_element + idx) % N];
        }
    };
    

Anmelden zum Antworten