#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; }
Test Cases
Test Results
Input
3 10 20 30
Expected Output
Buffer size: 3 10 20 30