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
- Language: Use C++.
- Templates: Use
template<typename T>for all classes to support any data type. - Class Structure:
- Create an abstract base class named
BagInterface. - Create a derived class named
PlainBag. - Create a derived class named
MagicChangeBag.
- Create an abstract base class named
- Interface Methods:
BagInterfacemust 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).
- Capacity Constraint: The bag capacity is fixed at 20.
- PlainBag Logic:
- Use a
vector<T>for storage. - Implement standard container behavior for all methods.
- Use a
- 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 theitembeing removed back into the bag (so the bag contains only that specific item). - Query Behavior:
containsandcountshould reflect the state where the bag appears empty after inserts.
- Use a
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