Если там нет ничего специфичного для Cpp&STL, значит можно переписать практически 1:1 на CP. Так?
В CP нет лямбд (ака функциональные/процедурные литералы), так что увы, 1 в 1 мой код не получится переписать. Также там нет литералов для массивов.
Ну а в конкретном месте vector<string> вполне можно заменить на какой-нибудь VectorForString record. Ну или там вообще на ARRAY OF STRING.
Замечу, что по факту массивы в CP и Обероне по своей сути те же самые шаблонные типы что и какой-нибудь vector в stl. Только вот в CP и Обероне программист не может создавать свои собственные шаблонные типы, он ограничен использованием только предопределенных шаблонных типов (тот же ARRAY).
Если мы изучение C++ ограничиваем уровнем Lua/Oberon, то std::vector для изучающего будет тем же, чем ARRAY OF something в Обероне - некой магической хренью которая специализируется конкретным типом, и с помощью этого превращается в полноценный тип.
Отличий vector<int> от ARRAY OF INTEGER нет никакой с точки зрения такого программиста (ну, разве что второе писать дольше). Сложности добавочной в C++ нет (на этом уровне, и на уровне тех моих исходников).