AutoSkill 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.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/c-baginterface-and-magicchangebag-implementation" ~/.claude/skills/ecnu-icalk-autoskill-c-baginterface-and-magicchangebag-implementation && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt3.5_8_GLM4.7/c-baginterface-and-magicchangebag-implementation/SKILL.md
source content

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