Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cython将数组/向量发送到c++;剧本 < P >假设我们有一个1维的NUMPY数组或列表,我们用它作为函数的输入,即FUNC(NP.Salp[1.5,2.5,3.5)],其中这个函数来自一个被包装的C++类,我们的目标是在C++脚本中打印这个数组或向量的值。 但是,我不知道如何定义C++函数,并在PYX文件中指定它。我想问一下,您是否可以分享一个像具有上述功能一样简单的代码片段,其中低延迟是最重要的 基本上,在C++方面我想做: void func (/* where I don't what to write */) { std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5) std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5) std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5) } void func(/*其中我不知道写什么*/){ 标准::cout a是一个包含指向零或多个int的指针的变量 n是a包含的值的数目_Python_C++_Cython_Memoryview - Fatal编程技术网

Python Cython将数组/向量发送到c++;剧本 < P >假设我们有一个1维的NUMPY数组或列表,我们用它作为函数的输入,即FUNC(NP.Salp[1.5,2.5,3.5)],其中这个函数来自一个被包装的C++类,我们的目标是在C++脚本中打印这个数组或向量的值。 但是,我不知道如何定义C++函数,并在PYX文件中指定它。我想问一下,您是否可以分享一个像具有上述功能一样简单的代码片段,其中低延迟是最重要的 基本上,在C++方面我想做: void func (/* where I don't what to write */) { std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5) std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5) std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5) } void func(/*其中我不知道写什么*/){ 标准::cout a是一个包含指向零或多个int的指针的变量 n是a包含的值的数目

Python Cython将数组/向量发送到c++;剧本 < P >假设我们有一个1维的NUMPY数组或列表,我们用它作为函数的输入,即FUNC(NP.Salp[1.5,2.5,3.5)],其中这个函数来自一个被包装的C++类,我们的目标是在C++脚本中打印这个数组或向量的值。 但是,我不知道如何定义C++函数,并在PYX文件中指定它。我想问一下,您是否可以分享一个像具有上述功能一样简单的代码片段,其中低延迟是最重要的 基本上,在C++方面我想做: void func (/* where I don't what to write */) { std::cout << array_[0] << std::endl; // which prints 1.5 (since np.array[1.5, 2.5, 3.5][0] was 1.5) std::cout << array_[1] << std::endl; // which prints 2.5 (since np.array[1.5, 2.5, 3.5][1] was 2.5) std::cout << array_[2] << std::endl; // which prints 3.5 (since np.array[1.5, 2.5, 3.5][2] was 3.5) } void func(/*其中我不知道写什么*/){ 标准::cout a是一个包含指向零或多个int的指针的变量 n是a包含的值的数目,python,c++,cython,memoryview,Python,C++,Cython,Memoryview,可以使用标准C++数组访问语法 > [i] < /COD>索引。请确保 i 代码> < /p> C++头将看起来像: void func(int *a, int n); .pyx文件类似于 cdef extern from "myheader.hpp": void func(int *a, int n) def func_wrapper(int[::1] mview): func(&mview[0], mview.shape[0]) 你需要编译

可以使用标准C++数组访问语法<代码> > [i] < /COD>索引。请确保<代码> i 代码> < /p>

C++头将看起来像:

void func(int *a, int n);
.pyx文件类似于

cdef extern from "myheader.hpp":
    void func(int *a, int n)

def func_wrapper(int[::1] mview):
    func(&mview[0], mview.shape[0])

你需要编译它,确保在源列表中列出你的Cython源文件和C源文件(.CPP文件,而不是头)。谢谢。因为我想在C++侧访问的数组有浮点数,我将它改为(浮点*A,int n)和(浮点[::1)MVIEW)。,这很有效。我希望这样做没问题。是的,这是处理浮点而不是整数的正确方法