如何将两个不同矢量的同一位置的两个元素组合在一起
How can I combine two elements in the same position of two different vectors?
输入v1和v2得到v3,例如,
v1 = {"abcd", "sfc", "fec"}
v2 = {"Chengdu","Chongqing","Shanghai"}
v3 = {"abcdChengdu","sfcChongqing", "fecShanghai"}
另一个例子,
v1 = {"xc", "sj"}
v2 = {"sd","gv","md"}
v3 = {"xcsd","sjgv","md"}
并且其他示例可以以相同的方式进行。如何获得v3?(请记住,将v1和v2作为输入(
您可以对两个向量进行迭代,只需将v1中的字符串+v2中的字符串添加到一个新向量中:
#include <algorithm>
#include <cstddef>
#include <iostream>
#include <string>
#include <vector>
std::vector<std::string> comb(const std::vector<std::string>& a,
const std::vector<std::string>& b) {
std::vector<std::string> result;
// get a reference to the smallest vector and to the largest vector
const auto minmaxpair = std::minmax(a, b,
[](const auto& A, const auto& B) {
return A.size() < B.size();
}
);
auto& min = minmaxpair.first;
auto& max = minmaxpair.second;
// reserve space for a result as big as the larger vector
result.reserve(max.size());
// add as many entries as there are in the smaller vector
size_t idx = 0;
for(; idx < min.size(); ++idx)
result.emplace_back(a[idx] + b[idx]);
// add the rest from the larger vector
for(; idx < max.size(); ++idx)
result.push_back(max[idx]);
return result;
}
int main() {
std::vector<std::string> v1 = {"xc", "sj"};
std::vector<std::string> v2 = {"sd", "gv", "md"};
auto v3 = comb(v1, v2);
for(auto& s : v3) std::cout << s << 'n';
}
输出:
xcsd
sjgv
md
auto combine(const std::vector<std::string>& v1, const std::vector<std::string>& v2){ // asserting that v1 and v2 have the same length
std::vector<std::string> v3 {};
for(auto i = 0 ; i < std::min(v1.size(), v2.size()); ++i) v3.push_back(v1[i] + v2[i]);
if(v1.size() < v2.size())
for(auto i = v1.size() ; i < v2.size(); ++i)
v3.push_back(v2[i]);
else if(v1.size() > v2.size())
for(auto i = v2.size() ; i < v1.size(); ++i)
v3.push_back(v1[i]);
return v3;
}
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 如何在单个链表中交换两个节点的位置,只修改指针
- 为什么动态分配的两个变量的内存位置不是连续的?
- 在两个不同的位置渲染 OpenGL 场景
- 如何在这两个分类的链接列表之间获得开关的位置
- 如何在C或C 的小数点后两个位置后四舍五入
- 如何在TIC TAC TOE中检查获胜者,以及如何不让两个玩家进入同一位置
- 原子功能无锁可以更改两个独立的存储位置
- git:将同一文件的两个位置保持同步
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- 相同地址位置如何给出两个不同的值
- 可视C 编译器将相同的存储位置提供给两个变量
- 如何通过两个值在向量中的位置进行条件比较
- 更改指针指向指针的位置,同时保持其他两个指针的值
- 由 8 个或更多位置分隔的数组中两个元素的最大乘积
- 如何从字符串中一次选择两个字符?到达字符串的第 i 个位置
- c++,指向同一位置的两个指针如何保存不同的值
- 在不使用第三个变量作为中间位置的情况下交换两个变量
- 是否可以让两个c++程序访问同一个内存位置