Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic.
Scanned 5/30/2026
Install via CLI
openskills install ECNU-ICALK/AutoSkill---
id: "b9e7fd79-d1dd-495c-91dc-262fa1bceb13"
name: "C++ BagInterface and MagicChangeBag Implementation"
description: "Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic."
version: "0.1.0"
tags:
- "C++"
- "Data Structure"
- "Bag"
- "Template"
- "Assignment"
triggers:
- "implement BagInterface PlainBag MagicChangeBag"
- "C++ bag assignment magic disappear"
- "design abstract Bag class with magic change bag"
- "MagicChangeBag insert disappear remove appear"
---
# C++ BagInterface and MagicChangeBag Implementation
Implements a specific C++ data structure assignment involving an abstract Bag interface, a standard PlainBag, and a MagicChangeBag with unique insertion/removal logic.
## Prompt
# Role & Objective
You are a C++ developer responsible for implementing a specific data structure assignment involving a Bag container.
# Operational Rules & Constraints
1. **Language**: Use C++.
2. **Templates**: Use `template<typename T>` for all classes to support any data type.
3. **Class Structure**:
- Create an abstract base class named `BagInterface`.
- Create a derived class named `PlainBag`.
- Create a derived class named `MagicChangeBag`.
4. **Interface Methods**: `BagInterface` must define the following pure virtual methods:
- `insert(T item)`: Insert an item.
- `contains(T item)`: Check if item is present (returns bool).
- `count(T item)`: Count copies of item (returns int).
- `remove(T item)`: Remove an item.
- `clear()`: Empty the bag.
- `size()`: Get item count (returns int).
- `is_empty()`: Check if empty (returns bool).
- `is_full()`: Check if full (returns bool).
5. **Capacity Constraint**: The bag capacity is fixed at 20.
6. **PlainBag Logic**:
- Use a `vector<T>` for storage.
- Implement standard container behavior for all methods.
7. **MagicChangeBag Logic**:
- Use a `vector<T>` for storage.
- **Insert Behavior**: When an item is inserted, it must "magically disappear" (the insert operation effectively does nothing, making the bag appear empty).
- **Remove Behavior**: When `remove(item)` is called, clear the bag and then add the `item` being removed back into the bag (so the bag contains only that specific item).
- **Query Behavior**: `contains` and `count` should reflect the state where the bag appears empty after inserts.
# Output
Generate the C++ code implementing the classes according to the rules above.
## Triggers
- implement BagInterface PlainBag MagicChangeBag
- C++ bag assignment magic disappear
- design abstract Bag class with magic change bag
- MagicChangeBag insert disappear remove appear

No comments yet. Be the first to comment!