首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何优化这段代码?(Qt5)

我如何优化这段代码?(Qt5)
EN

Stack Overflow用户
提问于 2014-01-28 16:41:13
回答 2查看 174关注 0票数 0

我写了这个代码样本,发现它看起来肯定不好,但我努力尝试优化它。也许有人能帮我。Qt5。

代码语言:javascript
复制
int MainWindow::readVariable(QVector<double> &value, QVector<double> &time, QString type, QFile *f)
{
    int buffer_size = 0;
    quint64 read_bytes = 0;
    while (1) 
    {
        if (type == "u_int32_t")
        {
            buffer_size = sizeof(unsigned);
            unsigned dest = 0;
            read_bytes = f->read(reinterpret_cast<char*>(&dest), buffer_size);
            value.append(dest);
             break; 
        }
        if (type == "int32_t")
        {
            buffer_size = sizeof(int32_t);
            int32_t dest = 0;
            read_bytes = f->read(reinterpret_cast<char*>(&dest), buffer_size);
            value.append(dest);
            break;
        }

        /* ... and so on for many-many variable types */
    }
}

"type“值是我之前从XML文件中读取的。

EN

回答 2

Stack Overflow用户

发布于 2014-01-28 17:07:41

使用模板可能是个好主意,比如

代码语言:javascript
复制
template< typename T >
void readVariable( QVector<double>& value, QVector<double>& time, QFile* f)
{
  int buffer_size = 0;
  quint64 read_bytes = 0;

  buffer_size = sizeof( T );
  T dest = 0;
  read_bytes = f->read( reinterpret_cast<char*>(&dest), buffer_size );
  value.append(dest);
}

你可以像这样使用它

代码语言:javascript
复制
QVector<double> v;
QVector<double> t;
QFile* f = nullptr;

readVariable<int>( v, t, f );

其中,int是类型

票数 1
EN

Stack Overflow用户

发布于 2014-01-28 16:47:41

您可以使用多态性代替if,并减少重复的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21400608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档