【问题标题】:What's the best way to make a bitwise function work for any type of integer input c++?使按位函数适用于任何类型的整数输入 c++ 的最佳方法是什么?
【发布时间】:2010-07-11 20:10:08
【问题描述】:

所以我需要以位读取标志并以位设置标志。这些位是各种大小的整数:int16、int32、int64 等。

我想要一个函数来做这样的事情:

static integertype function(integertype data, char startbit, char endbit);

我不想编写相同的代码,以便在单独但相同的函数中将不同大小的整数与位隔离开来(对于我要编写的大量位函数)。

我考虑过为数据使用 void 指针,这样一切都可以通过一个函数运行。这是一个糟糕的设计吗?至于效率如何?由于缺乏经验,我对设计的坏/好没有概念。

static int function(void *data, char startbit, char endbit)

必须经常查看这些标志,因为这是针对数据采集系统的。 void 指针实现会相当有效吗?

我知道过早优化不好,但我想知道哪些事情通常比其他事情效率低或效率高,以便我做出正确的决定。

提前感谢你送我去学校。

【问题讨论】:

    标签: c++ performance void-pointers


    【解决方案1】:

    通常,如果您需要通用功能,您可以使用模板:

    template <typename T>
    T function(T data, char startbit, char endbit);
    

    但请记住,我们有std::bitset

    【讨论】:

    • 帅哥。我不知道您可以在 C++ 中执行模板函数,并且绝对不知道 std::bitset。非常感谢。
    • 这个网站帮助我了解了 std::bitset 和其他选项。 drdobbs.com/…
    • @Johnny:很高兴为您提供帮助。也许您可能会选择一本好的 C++ 书籍来帮助巩固和扩展您的知识? stackoverflow.com/questions/388242/…
    【解决方案2】:

    为什么不把它做成模板函数呢?

    template<typename T>
    static T foobar(T data, char startbit, char endbit);
    

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2010-10-16
      • 1970-01-01
      相关资源
      最近更新 更多