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

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

本文关键字:字符串 原始 副本 返回值 改变      更新时间:2023-10-16

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

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。

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

  • C++是否已经存在某些东西或可能的解决方法来实现这一点?
  • 我想将字符串参数定义为 const * original_string并期望操作的行为相同。

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

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的输入。