我遇到的问题是排列的第一个结果被输入 vector ,但在下一个 for_each
循环迭代 vector 的大小将自身重置为 {size = 0}
,而不是增加其大小并插入第二个排列,依此类推。我该如何解决这个问题?我试过使用 while 循环,但我不知道它的条件应该是什么。
我还想问一下,因为稍后我需要将此 vector 中的值与包含字典的 vector 进行比较,当前代码(在正常工作时)是否允许我这样做。
到目前为止,这是我的代码:
for_each(permutations.begin(), permutations.end(), [](string stringPermutations)
{
vector<string> permutations;
permutations.push_back(stringPermutations);
cout << stringPermutations << endl;
});
很显然,每次调用 lambda 时,它总是会创建一个新的本地 vector 。如果我放置 vector<string> permutations;
在 lambda 之外我得到一个错误 permutations.push_back(stringPermutations);
.那么我该如何检索 stringPermutations
离开 lambda 并进入公共(public)可访问 vector ?
感谢您的帮助和反馈。
最佳答案
在 lambda 外部声明 vector 并使用 lambda capture捕捉这个 vector :
vector<string> permutation_v;
for_each(permutations.begin(), permutations.end(), [&](string stringPermutations)
// ^
{
permutation_v.push_back(stringPermutations);
cout << stringPermutations << endl;
});
但如果我是你,我会直接将这个 vector 构造为
vector<string> permutation_v{permutations.begin(), permutations.end()};
关于C++ 将排列结果插入 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196720/