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

时间:2015-03-08 08:49:13

标签: c++ string recursion const

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

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;

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

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

  • 在C ++中是否存在已经存在或已解决的问题?
  • 我觉得将字符串参数定义为const * original_string并期望操作行为相同。

1 个答案:

答案 0 :(得分:0)

我已经定义了一个克隆函数

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

并在调用函数的方法类中

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

还将方法参数更改为

method(const orignal_string) { ... }

感谢@Scooter的输入。