改变字符串的副本并返回值而不是更改原始字符串

Mutating copy of string and returning value instead of changing original string

我有一个使用字符串的递归函数,我执行的操作是

erase, replace, insert,..

int method(original_string):
    ...
    min(operation1(original_string), operation2(original_string)) 
    ...

我想保持原始字符串不变,但需要一个变异的新字符串

mutate(original_string, operation) :
        temp = copyof(original_string)
        operation(temp);
        return temp;

因为问题是操作 1 影响 original_string,我也想要操作 2 的真实 original_string。

但这对于不同的功能是不可能的,我需要为每个功能编写。

我定义了一个克隆函数

string clone(string orig_str) {
    string cloned_str(orig_str);
    return cloned_str;
}

并在方法class中调用函数

min(
    method(clone(original_string).erase(...)), 
    method(clone(original_string).replace(...)
    )

还将方法参数更改为

method(const orignal_string) { ... }

感谢@Scooter 的输入。