c++
please solve it quickly
Question 1: Implement the following Directory as described below: Each Directory contains a number of entries; Implement class Directory with the following: 1. Three private data member: 6 points) a. int maxSize b. int current to track the current number of entries in the Directory. This attribute gets modified whenever an entry is inserted or removed from list. c. string *list a pointer a dynamic array of strings that represent the names of the contacts in the entries. 2. The following public member functions: (54 points): Use this pointer in all member function of the class that take one or more parameters. a. Defaulted parameterized constructor that receive only one integer parameter for the maxSize data member.it set the current data member to zero, create and fill the list with "N/A". The Default value of maxSize is 10. b. Deep Copy Constructor. c. Directory(): Deallocate the list. d. isEmpty(), a boolean function that returns true if current = = = 0. and false otherwise. g. e. isFull(), a boolean function that returns true if current== maxSize, and false otherwise. f. int find(string entry) returns the index of entry if found in list, otherwise returns -1. void insert(string entryname):this function does the following: 1. Inserts entryname into the end of the list in the Directory, if both: the Directory is not full and entryname does not exist in list. ii. If entryname to be inserted is already in list, then print a message saying the entry won't be inserted because it already exists in list. iii. If entryname is not in list, but list is full, then print a suitable message to say that the insert operation failed h. void printDirectory0: prints the names of the contacts in the entries currently in the Directory alongside their number (index). i. Setter and getter for maxSize. j. getter for current data member. *. float utilization() that calculates the percentage of used entries in a Directory. (hint: utilization is 100*current/maxSize). Make sure that the division is a floating-point division. 1. make all the member functions that do not change or modify data constant. 3. Define friend function void Erase(Directory& obj, int i): if the Directory is not empty and if the index (i) is between 0 and current-1, inclusive, it removes the ich entry from list in Directory and shifts remaining entries to left to fill the gap. Otherwise, it prints a message that indicate if the Directory is empty or the index (i) is out of range