c++ - 返回具有常量成员数的数组

标签 c++ arrays complex-numbers multiple-return-values

我想知道如何编写返回成员数恒定的数组的函数。这有意义吗? 我知道我可以做这样的事情:

float* WojtekEQgraph::_Wk_N(float k)
{
    float comp[2];
    comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
    comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number

    return comp;
}

它返回包含两个成员的数组。但实际上“返回”表示期望指向数组的指针,而不管它有多少成员。 但是如果以某种不可预知的方式会有

float comp[3]float comp[1] 我想要 return comp; 会给我错误。 我该怎么做?

我试过了:

float[2] WojtekEQgraph::_Wk_N(float k)
{
    float comp[2];
    comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
    comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number

    return comp;
}

但它不起作用。如有任何帮助,请提前致谢。

最佳答案

如果要返回一个数组对象,C++标准库拼写为std::array .所以将它应用到你的例子中:

std::array<float, 2> WojtekEQgraph::_Wk_N(float k)
{
    std::array<float, 2> comp;
    comp[0] = cos(-2.0f * double_Pi * (float)k); // Real number
    comp[1] = sin(-2.0f * double_Pi * (float)k); // Imag number

    return comp;
}

会做的。其他优点包括没有悬挂引用和需要处理困惑的内存分配。简短而甜美的聚合。

如果您处理的是复数,还有另一个答案。不要重新发明轮子,使用std::complex相反。

关于c++ - 返回具有常量成员数的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118987/

相关文章:

arrays - 如果可以删除任何一个元素,则查找是否可以将数组分为相等和的两个子数组

c++ - vector 数组,计算点积

java - 递归FFT java算法返回空值?

c# - 存储对结构数组的 C# 引用并检索它 - 可以不复制吗?

android - QSetting 不适合我

c++ - CMake 为 VS 项目生成循环依赖项,但不生成 make 文件。如何避免?

python - fatal error : pyconfig. h:没有那个文件或目录

haskell - 如何在 Haskell 中数值计算复杂函数的值(给定该函数的导数)?

boost - 在 Boost MPI 中使用骨架/内容机制发送复杂数据

c++ - 我可以使用与静态数组具有相同功能的 vector 吗?