c++ - 如何从 C++ 中的两个字符串向量创建一个字符串?
问题描述
我有两个单独的字符串向量:
std::vector<std::string> vectorA;
vectorA.push_back("a1");
vectorA.push_back("\na2");
std::vector<std::string> vectorB;
vectorB.push_back("b1");
vectorB.push_back("b2");
我想创建一个std::string vectorOutput
显示以下内容的内容:
a1 b1
a2 b2
现在,vector 中的元素A
被定义在一个类中,而 vector 中的元素B
来自另一个类,并在发生一些代码逻辑后被读取。矢量大小是相同的。我想知道在 C++ 中创建这个新vectorOutput
字符串的最佳方法是什么?我正在考虑一个循环,它遍历每个向量的元素并将它们附加到vectorOutput
,例如:
for (int i = 0; i < vectorA.size() < i++)
{
vectorOutput += vectorA[i] + vectorB[i];
}
在我的代码中,这些向量的元素比这里提供的要多。还有另一种方法可以实现这一目标吗?也许通过创建枚举或结构?
解决方案
使用 range-v3 库,您可以这样编写:
namespace rs = ranges;
namespace rv = ranges::views;
auto outputVector = rv::transform(vectorA, vectorB, std::plus{})
| rv::cache1
| rv::join
| rs::to<std::string>;
这没有循环,并且非常可读。请注意,cache1
需要确保返回的视图views::transform
没有悬空。
这是一个演示。
推荐阅读
- python - python / ortools / cpsolver - 如果z在x和y之间,a = b
- javascript - 如何修复代码,以便仅针对点击的国家/地区显示附加卡?
- javascript - 如何使用 javascript/jquery 验证 pkcs#7 格式的签名消息
- python - 如何循环遍历熊猫数据框中列中的每一行
- python - BeautifulSoup 和 Selenium 抓取网页,汤不反映更新的 HTML
- javascript - 阻止模态内容默认打开
- mysql - Redis 连接到 my-redis:6379 失败 - 运行种子时 getaddrinfo ENOTFOUND
- node.js - 由于与 babel 的依赖关系,安装 react 时出现问题
- bash - wp-cli 表输出到变量-> wlack webhook
- bluetooth - 每个信标可以跟踪多少个BLE设备以进行室内定位?