gpt4 book ai didi

c++ - 处理具有相同底层数据结构的不同类型

转载 作者:搜寻专家 更新时间:2023-10-31 01:17:56 24 4
gpt4 key购买 nike

我需要在计算机模拟中混合使用 C 代码和 C++ 代码。

C 库具有引用常规 double 组的函数:

void position(double[3])

另一个 C 库定义了它自己的 vector 类型:

void do_something(*custom_vector)

我的前端(C++)使用boost::numeric::ublas::vector

第一种情况,我有很多地方有这种代码:

double tmp[3];
position(tmp)
boostvec r(3);
r(0) = tmp[0]; r(1) = tmp[1]; r(2) = tmp[2];
// continue working with r

还有

custom_vector *v;
do_something(v);
boostvec r(3);
r(0) = v[0]; r(1) = v[1]; r(2) = v[2];

在内部,所有类型最终都是 vector 容器,但它们在实现上的细微差别导致了大量的样板文件爆炸。我还处理了很多不同版本的 double(一些定义了 realtype(这是一个 double),其他定义了 number(这是一个双),等等)。

你如何处理这种情况?

谢谢。

最佳答案

只要源类型和目标类型都支持标准迭代器接口(interface)(对于 std::vector、数组和我能想到的每个 Boost 序列类型都是如此;所以您只需要修复您的 custom_vector),并且作为只要数字类型之间可能存在隐式转换,您就应该能够只使用 std::copy

关于c++ - 处理具有相同底层数据结构的不同类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com