I'm currently storing side quest data in an array as a bunch of index values that I retrieve when displaying the quest log. Basically, "SidequestArray.at(0)=1, set QuestLogText1 to 'Find the herbs'" and so on and so forth, with each array slot corresponding to a QuestLogText and the values within being signifiers for individual quests. New side quests that the player picks up are added to the end of the array.
When the player completes a quest that's stored in the middle of the array (and can't be popped front or back), I need to take out that number and move it to another array (CompletedQuests) while bumping up all the data behind it and maintaining the same array size so that there aren't any gaps/empty slots in the middle of the quest log. What's the best way to go about this?