我被认为是 c++ 的新手,我对合并三组数组有一些疑问。 例如:
x = 2,3,1,4,5
y = 1,3,5,7,9
z = 3,5,4,6,1
我想将它们合并到:
w = 2,1,3,3,3,5,1,5,4,4,7,6,5,9,1
我一直在通过谷歌搜索。但是我得到的是如何合并数组并将它们按升序排列。
我真正需要的是:
1st from x, 1st from y, 1st from z, 2nd from x, 2nd from y, 2nd from z ............ 5th from z
非常感谢!
最佳答案
这只是用 i
从 0
到 4
并将每个 i
映射到数组w
的对应元素。
这是算法的框架:
std::array<int, 5> x, y, z;
std::array<int, 15> w;
for (int i = 0; i < 5; i++) {
w[i*3] = x[i];
w[i*3+1] = y[i];
w[i*3+2] = z[i];
}
和here的工作示例。
如果您使用 std::vector
,然后算法变得有点棘手。您需要找到最大尺寸,使用 std::max
例如,并根据该值执行循环。然后,只要 vector 为空,就需要跳过它。这是骨架:
std::vector<int> x, y, z;
std::vector<int> w;
std::size_t max = std::max({x.size(), y.size(), z.size()});
for (std::size_t i = 0; i < max; i++) {
if (x.size() > i) w.push_back(x[i]);
if (y.size() > i) w.push_back(y[i]);
if (z.size() > i) w.push_back(z[i]);
}
关于c++ - 合并3组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278438/