Нумерация одинаковых строк без изменения их порядка в массиве
Массив строк std::string str[] = {"строка", "01строка", "09строка", "04строка", "03строка", "01строка", "09строка", "05строка", "03строка", "строка", "01строка", "06строка", "03строка", "06строка", "09строка", "строка", "01строка", "05строка", "строка", "04строка", "строка", "09строка"};
Мне нужно пронумеровать одинаковые строки - в конец строки прибавить ее номер в формате "_00n" (например, строка_001, строка_002, 01строка_001, 01строка_002 и т.д.). При этом пронумерованная строка должна быть записана в другой массив на то же место, что и в исходном массиве (т.е. строка_001 на 1 место, строка_002 на 10 место и т.д.). Мне не удалось придумать алгоритм решения этой задачи. Подскажите, пожалуйста, алгоритм решения этой задачи средствами C++.