c++ - 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 中检索出一个公共可访问的向量呢?
感谢您的帮助和反馈。
解决方案
在 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()};
推荐阅读
- python - 用于提取 Cisco 交换机信息以准备网络迁移的 Python SSH 脚本
- python - Gensim Doc2Vec Exception AttributeError: 'str' object has no attribute 'decode'
- java - Spring boot - 尝试从 mySQL DB 验证用户 - 需要授予权限的文本表示
- php - 从数据库中填充 $contact_name
- python - 如何在 SQLAlchemy 中执行自定义连接
- php - 会话未从 Guzzle Post 发起
- php - 如何在 ubuntu 18.04 中安装和使用 php 7.0.22
- javascript - 防止 < href ="#slider" class="slider-change"> 跳到顶部
- java - Oracle Forms 12c 的 FSAL 是否与 Java 9+ 兼容
- express - Sequelize 模型不会在 then 块中返回