c++ - 在 C++ 中添加不同大小的 double vector

标签 c++ vector

我有许多不同大小的 vector 容器,每个容器都包含 double 。 我想添加每个 vector 的元素来创建一个 vector double 。这个简单的例子将举例说明我在说什么:

考虑具有三个元素 3.0 2.0 1.0 的两个 vector A 和具有两个元素的 B 2.0 1.0。我想从最后一个元素开始添加两个 vector 并工作 向后。这将给出一个包含条目 3.0 4.0 2.0 的数组 C。

最优雅/最有效的方法是什么?

谢谢!

最佳答案

一旦你知道你有一个比另一个大的 vector

std::vector<double> new_vector = bigger_vector; // Copy the largest
std::transform(smaller_vector.rbegin(), smaller_vector.rend(), // iterate over the complete smaller vector 
    bigger_vector.rbegin(), // 2nd input is the corresponding entries of the larger vector  
    new_vector.rbegin(),    // Output is the new vector 
    std::plus<double>());   // Add em

这很好,因为您不必执行任何循环缩进,并且可以在任何支持反向迭代器的序列容器上工作。

关于c++ - 在 C++ 中添加不同大小的 double vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3610459/

相关文章:

java - 尝试修改 Java Vector 的 get() 以在元素为 null 时创建 new T()

c++ - 为什么对排序 vector 的二分查找比 std::set 查找慢?

c++ - 使用 Autotools 构建 CUDA 和 C++

c++ - 在 C++ 中返回两个创建的数组

c++ - C++ 17 filesystem::recursive_directory_iterator()在Mac上没有此类目录给出错误但在Windows上有效

c++ - 保持 vector 中元素的数量不变

c++ - 修复 std::vector<std::vector<UC>> lum 中调用 'assign' 时出现的错误:没有匹配函数;

c++ - std::ptrdiff_t 和 std::size_t 的奇怪类型定义

c++ - 如何在状态中创建状态机?

c++ - 一种类似 vector 但已排序的数据类型