gpt4 book ai didi

c++ - 在运行递归函数时将新元素插入 vector 时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:34 24 4
gpt4 key购买 nike

我有一个类,我想在其中生成字符串“123”的所有排列

所以我想要字符串“123”、“321”、“132”等

在这个类中我定义了一个 vector 它将包含我稍后要使用的所有这些字符串...

这是我用来查找所有排列的递归:

  findPermutations(char *set, int begin, int end){

int i;
int range = end - begin;
if(range == 0) myvE.push_back(set); //notice how I want to update the vector
else{

for(i=0;i<range;i++){
swap(set[begin],set[begin+i]);
findPermutations(set,begin+1,end);
swap(set[begin],set[begin+i]);
}
}
}

如果范围为 0,则该集合将只有下一个排列。我想将该排列存储在 vector 中,但最后我的 vector 充满了“123”字符串

我不明白这是怎么回事

有人可以帮帮我吗?

谢谢

最佳答案

我认为问题在于您多次将指向同一字符串的指针添加到 vector 中,这意味着您的 vector 将存储多个指向完全相同字符串的指针。由于您在递归中改变此字符串,因此多次输出相同的字符串。

要解决此问题,请考虑将字符串的拷贝存储在 vector 中,或者切换到类似 atd::string 的类型,以便将字符串添加到 vector 中实际上会为您创建一个拷贝。

希望这对您有所帮助!

关于c++ - 在运行递归函数时将新元素插入 vector 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com