c# - 将数组操作从 C++ 重写为 C#

标签 c# c++ algorithm

我有一个 C++ 代码,我想在我的 C# 项目中重用它,我需要一些帮助。 这是主题

 for (int i = 0; i < numOfSamples; i++)
 {
      *(((double*)m_Buffer) + i)
          = max(*(((double*)m_Buffer) + i*4), *(((double*)m_Buffer) + i*4 + 1));
 }

其中 m_Buffer 是 float 组。这部分代码将数组的每 2 个“ float ”读取为一个“ double ”,然后进行一些操作(移动它,选择最大值等) 问题是 - 如何在 C# 中执行相同的操作。

例如,我有一个数组 [12,45,26,32,07,89,14,11],我必须转换位置 0 和 1(12 和 45)的项目,这样我才能得到一个新的数字( double 类型)最高(我不确定 - 可能是最低)部分位将由 12 和最低 - 从 45 组成

最佳答案

应该是这样的:

for (int i = 0; i < numOfSamples; i++)
{
    m_Buffer[i] = Math.Max(m_Buffer[i * 4], m_Buffer[i * 4 + 1]);
}

其中 m_Buffer 必须是至少包含 numOfSamples * 4 + 1 个元素的数组。

关于c# - 将数组操作从 C++ 重写为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349842/

相关文章:

c# - FxCop 或 StyleCop 中的自定义静态代码分析规则?

c++ - 在 LPSTR 文件路径中用双反斜杠或正斜杠替换反斜杠

algorithm - 如何通过网络中的节点生成随机路径

c++ - 具有自定义比较函数结果错误的 std::sort 函数:必须调用对非静态成员函数的引用

java - 无等待和无锁算法的示例/说明

python - 计算所选元素为最大值的子数组的数量

c# - 从 Web 服务处理数据库 - 如何提高性能?

c# - 进程和可执行文件名

c# - 命名空间中不存在 wpf 资源字典?

c++ - 初始化器但类型不完整?