#include <iostream> #include <array> using namespace std; template<typename T, size_t N> class FixedBuffer { public: void push(T v) { if (i != N) a[i++] = v; } size_t size() const { return i; } T operator[](size_t ii) const { if (ii >= i) throw std::out_of_range("FixedBuffer out of range"); return a[ii]; } private: array<T, N> a; typename array<T, N>::size_type i{0}; }; 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