c++ - 合并3组数组

标签 c++ arrays

我被认为是 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

非常感谢!

最佳答案

这只是用 i04 并将每个 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/

相关文章:

java - 如何从 ND4j 中的 NDArray 中选择一组给定的索引,类似于 numpy 的 arraydata[arrayIndex]?

c - 字节似乎被转移了

c++ - openmp是否有可能在同一个cpu(核心)上运行不同的线程

C++ volatile 放置 新

c++ - 在 snprintf 中调用 strlen 期间调用 backtrace_symbols_fd() 有时会挂起

c++ - 重载预增量运算符未显示正确结果

c - 如何将指向 C(而非 C++)中的结构的指针数组设为空

arrays - 将函数传递给数组过滤器函数错误 - Swift 4

c++ - 分配抽象类类型 'CObject' 的对象

php - 将 MySQL 结果填充到网格中