c++ - 使用两个 C++ vector 作为参数的 'complex' 操作函数的最佳方法

标签 c++

为了简单起见,请问用以下 Python 代码用 C++ 编写以下代码的最佳方法是什么

import numpy as np

X = np.array([1,2,3,...])
Y = np.array([10,11,12,...])

def funct(X,Y):
  return 0.5 * X + 0.5 * 3 * Y

或者,为了不使用 Python 进行解释,有没有办法:

#include <vector>

std::vector<double> Z {};
std::vector<double> X {1,2,3,4};
std::vector<double> Y {5,6,7,8};

Z = 0.5 * X + 0.5 * 3 * Y; // something like this

最佳答案

也许 valarray 就是您所需要的:

#include <iostream>
#include <valarray>

int main() {
    std::valarray<double> Z {};
    std::valarray<double> X {1,2,3,4};
    std::valarray<double> Y {5,6,7,8};
    Z = 0.5 * X + 0.5 * 3 * Y;

    for(auto v : Z) std::cout << v << '\n';
}

输出

8
10
12
14

注释来自 std::valarray : "当两个参数是具有不同大小的 valarray 时,行为未定义。"

关于c++ - 使用两个 C++ vector 作为参数的 'complex' 操作函数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66402373/

相关文章:

c++ - 在这种情况下,如何管理继承?

c++ - GCC 允许我从空字符串中取消引用迭代器

c++ - 使用迭代器删除元素,不知道 vector

c++动态引用函数指针

c++ - 使用 clang 和 gfortran 编译

c++ - 无法解析的外部符号 : __cairo_path_fixed_stroke_to_traps

c++ - 如果我递减 `std::size_t(0)` 是否保证等于 `std::size_t(-1)`?

c++ - 将 std::u16string 转换为 NSString

java - 在 Linux 上运行 Java 调用 native .so 时持续存在 UnsatisfiedLinkError

c++ - 获取单个元素的大小或使用 operator new[] 分配的元素计数