0

代码在 pastebin 上:http: //pastebin.com/UknqKvMq

因此,我正在置换 0、1、2、3、4、5、6、7、8、9 的所有可能排列(即形成 10 位数字)。我通过调用将每个排列存储在堆上

new int[10]

返回的指针我推到

static vector<int*>

现在,当我将指针推到向量上时,第一项指向的数据正在被修改(可能还有向量指向的所有其他项目)。我在代码中有许多打印语句显示了这一点,并调用了 sleep() 来减慢进程。为什么会这样?

4

2 回答 2

1

我不知道你想在这里做什么,但你可以用几行代码写出来:

使用std::next_permutation

std::vector<int> v{0,1,2,3,4,5,6,7,8,9};
// std::sort(v.begin(), v.end());
do {

    for(const auto&i:v)
      std::cout<<i;
    std::cout<<std::endl;

} while(std::next_permutation(v.begin(), v.end()));
于 2013-10-13T10:53:28.350 回答
1

您调用Permute,它将指针推inputCopy->arrangement入您的静态向量。然后立即删除它。这意味着您的向量包含悬空指针。

于 2013-10-13T11:02:43.757 回答