FixedBuffer Class Template

#include <iostream>
using namespace std;

template<typename T, size_t N>
class FixedBuffer {

	// your code here
    private:
     T data[N];
     size_t buf_cnt = 0;

    public:
        void push(T v)
        {
            if(buf_cnt < N){
                data[buf_cnt] = v;
                buf_cnt = buf_cnt + 1; 
            }
            else{
                printf("Buffer is full\n");
            }

        }
        size_t size() const
        {
            return buf_cnt;
        }

        T operator[](size_t idx) const
        {
            if (idx >= buf_cnt) 
            {
                throw out_of_range("Index out of bounds\n");
            }
            return data[idx];
        }

};

int main() {
   int n;
   cin >> n;
   FixedBuffer<int, 10> buf;  // max 10 elements
   for (int i = 0; i < n; i++) {
       int v;
       cin >> v;
       buf.push(v);
   }
   cout << "Buffer size: " << buf.size() << "\n";
   for (size_t i = 0; i < buf.size(); i++) {
       cout << buf[i] << " ";
   }
   cout << "\n";
   return 0;
}
Upvote
Downvote
Loading...

Input

3 10 20 30

Expected Output

Buffer size: 3 10 20 30