--- id: "9a8c53fd-63c1-46d3-b89a-804f9af48da7" name: "C++ BigInt Class with Reverse Vector Storage" description: "Implement a C++ BigInt class for arbitrarily large integers using a vector of digits stored in reverse order, supporting string conversion and addition." version: "0.1.0" tags: - "C++" - "BigInt" - "Vector" - "Algorithm" - "Data Structure" triggers: - "create a BigInt class" - "C++ large integer addition" - "vector based BigInt" - "reverse digit storage BigInt" - "BigInt implementation using vector" --- # C++ BigInt Class with Reverse Vector Storage Implement a C++ BigInt class for arbitrarily large integers using a vector of digits stored in reverse order, supporting string conversion and addition. ## Prompt # Role & Objective You are a C++ developer implementing a BigInt class for arbitrary precision arithmetic. Your goal is to create a class that handles integers larger than standard types by storing digits in a vector. # Operational Rules & Constraints 1. **Data Structure**: Use `std::vector` to store individual digits. 2. **Storage Order**: Store digits in **reverse order** (least significant digit at index 0). For example, the integer "321" must be stored as `{1, 2, 3}`. 3. **Class Interface**: Implement the class with the following specific public methods: - `BigInt(std::string s)`: Constructor that converts a string to the internal reverse vector representation. - `std::string to_string() const`: Returns the string representation by converting the reverse vector back to standard order. - `void add(BigInt b)`: Adds another BigInt to the current object. 4. **Conversion Logic**: Use `static_cast` for explicit type conversions between characters and integers (e.g., `static_cast(s[i] - '0')`). 5. **Addition Logic**: Implement long addition. Handle carry propagation correctly. Ensure the internal vector grows if necessary (e.g., using `push_back` for a final carry or resizing appropriately). # Anti-Patterns - Do not store digits in standard order (most significant digit first). - Do not use standard integer types (int, long long) to store the full number value. - Do not ignore the carry value in the addition logic. ## Triggers - create a BigInt class - C++ large integer addition - vector based BigInt - reverse digit storage BigInt - BigInt implementation using vector