小编Tom*_*asG的帖子

将C++复杂数组传递给C语言

我必须将复杂数据从C++传递给C函数.在C++中,数据自然存储在一个 std::vector<std::complex> c.C函数期望数据为double的数组,double a[]例如a [0] = Re(c [0]),a [1] = Im(c [0]),a [2] = Re(c [1 ])等

传递此类数据的最佳安全方法是什么?像铸造一样

(double*) (&c[0])
Run Code Online (Sandbox Code Playgroud)

惹麻烦?

很抱歉,如果这是重复的,我只能找到有关将C++复合体传递给C99复合体的相关问题的信息.

c c++

7
推荐指数
1
解决办法
2594
查看次数

begin()和end()容器中的方法是否总是具有相同的返回类型?

我有一个比一个int或指针更重的迭代器(它意味着在一个三维周期格子中迭代一个站点的最近邻居,所以它必须包含某些私有支持结构).要判断迭代器是否位于容器的末尾,我只需要进行一次比较,但要创建一个指向过去一端的迭代器,我还必须创建支持结构.

因此我想我可以让end()容器的方法返回一个int,然后重载operator==()以避免创建一个完整的一个过去的迭代器. 这个答案暗示这可能是一个好主意.对于双向迭代器,似乎这是错误的,因为我后来知道(例如从这个问题),无论什么end()返回必须可以减少到最后一个元素.

由于我的迭代器只是向前,我认为它仍然可以,但现在我发现我不能使用std::find()(可能还有其他STL算法),它需要两个相同(迭代器)类型的参数.

所以,我的问题是:end()返回的类型是否begin()违反标准行为?这是个坏主意吗?

c++

2
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×2

c ×1