[Buổi 30][Template & ngoại lệ][HW] Bài 2: Box<T>


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Box<T>

Bối cảnh

Box<T> là một container generic rất nhỏ giữ đúng một value. Nó hỗ trợ get()set(value); cùng class phải dùng được cho int và string mà không viết lại logic. Homework Easy luyện class template, constructor và method template-instantiated state.

Sequence command cho thấy state bên trong Box thay đổi qua SET và được GET đọc lại; không có exception ở bài này.

B30 kết hợp hai ý tưởng: generic code để tránh copy thuật toán theo kiểu dữ liệu và exception để tách luồng lỗi khỏi luồng thành công. Exception chỉ nên xuất hiện ở điểm precondition/validation thất bại; state hoặc aggregate không được cập nhật trước khi biết thao tác đã hợp lệ. Với template, hãy xác định rõ các toán tử/operation mà type T cần hỗ trợ.

Yêu cầu

  1. Tạo template<class T> class Box có set/get.
  2. Đọc type I/S, initial và q lệnh SET/GET.
  3. Mỗi GET in value.

Input

Dòng 1 type initial q; q command.

Output

Mỗi GET một dòng.

Ràng buộc

1≤q≤1000.

Ví dụ 1

Input

I 1 4
GET
SET 5
GET
GET

Output

1
5
5

Giải thích

Box bắt đầu1. GET in1; SET5 làm state thành5; hai GET sau đều in5. Output 1, 5, 5 theo đúng thứ tự query.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Ví dụ 2

Input

S a 3
GET
SET b
GET

Output

a
b

Giải thích

Box<string> bắt đầu a. GET in a, SET b cập nhật value, GET cuối in b. Cùng code template nhưng type string hoạt động tương tự.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Thông tin học tập

  • Module: M08
  • Buổi: B30
  • Loại bài: HOMEWORK
  • Độ khó: Easy
  • Concepts: class template, generic storage, methods
  • Giới hạn kiến thức: B01-B30
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo