首页 > 解决方案 > C ++将排列结果插入向量

问题描述

我遇到的问题是排列的第一个结果被输入到向量中,但在下一次for_each循环迭代中,向量的大小将自身重置为{size = 0},而不是增加其大小并插入第二个排列,依此类推。我该如何解决这个问题?我尝试过使用 while 循环,但我无法弄清楚它的条件应该是什么。

我还想问一下,稍后我需要将此向量中的值与包含字典的向量进行比较,当前代码(在正常工作时)是否允许我这样做。

到目前为止,这是我的代码:

for_each(permutations.begin(), permutations.end(), [](string stringPermutations)
{
    vector<string> permutations;
    permutations.push_back(stringPermutations);
    cout << stringPermutations << endl;
});

显然,每次调用 lambda 时,它总是会创建一个新的本地向量。如果我放在vector<string> permutations;lambda 之外,我会收到一个错误permutations.push_back(stringPermutations);。那么我该如何stringPermutations从 lambda 中检索出一个公共可访问的向量呢?

感谢您的帮助和反馈。

标签: c++visual-c++lambda

解决方案


在 lambda 之外声明向量并使用lambda capture来捕获这个向量:

vector<string> permutation_v;
for_each(permutations.begin(), permutations.end(), [&](string stringPermutations)
                                                 // ^
{
    permutation_v.push_back(stringPermutations);
    cout << stringPermutations << endl;
});

但如果我是你,我会直接将这个向量构造为

vector<string> permutation_v{permutations.begin(), permutations.end()};

推荐阅读