• Qt ------ 自定义QVector<T>中的T


    #ifndef FREQUENCYSPECTRUM_H
    #define FREQUENCYSPECTRUM_H
    
    #include <QtCore/QVector>
    
    /**
     * Represents a frequency spectrum as a series of elements, each of which
     * consists of a frequency, an amplitude and a phase.
     */
    class FrequencySpectrum {
    public:
        FrequencySpectrum(int numPoints = 0);
    
        struct Element
        {
            Element()
            :   frequency(0.0), amplitude(0.0), phase(0.0), clipped(false)
            { }
    
            /**
             * Frequency in Hertz
             */
            qreal frequency;
    
            /**
             * Amplitude in range [0.0, 1.0]
             */
            qreal amplitude;
    
            /**
             * Phase in range [0.0, 2*PI]
             */
            qreal phase;
    
            /**
             * Indicates whether value has been clipped during spectrum analysis
             */
            bool clipped;
        };
    
        typedef QVector<Element>::iterator iterator;
        typedef QVector<Element>::const_iterator const_iterator;
    
        void reset();
    
        int count() const;
        Element& operator[](int index);
        const Element& operator[](int index) const;
        iterator begin();
        iterator end();
        const_iterator begin() const;
        const_iterator end() const;
    
    private:
        QVector<Element> m_elements;
    
    };
    
    #endif // FREQUENCYSPECTRUM_H
    #include "frequencyspectrum.h"
    
    FrequencySpectrum::FrequencySpectrum(int numPoints)
        :   m_elements(numPoints)//等于m_elements.resize(numPoints);
    {
    
    }
    
    void FrequencySpectrum::reset()
    {
        iterator i = begin();
        for ( ; i != end(); ++i)
            *i = Element();
    }
    
    int FrequencySpectrum::count() const
    {
        return m_elements.count();
    }
    
    FrequencySpectrum::Element &FrequencySpectrum::operator[](int index)
    {
        return m_elements[index];
    }
    
    const FrequencySpectrum::Element &FrequencySpectrum::operator[](int index) const
    {
        return m_elements[index];
    }
    
    FrequencySpectrum::iterator FrequencySpectrum::begin()
    {
        return m_elements.begin();
    }
    
    FrequencySpectrum::iterator FrequencySpectrum::end()
    {
        return m_elements.end();
    }
    
    FrequencySpectrum::const_iterator FrequencySpectrum::begin() const
    {
        return m_elements.begin();
    }
    
    FrequencySpectrum::const_iterator FrequencySpectrum::end() const
    {
        return m_elements.end();
    }
  • 相关阅读:
    WPF FAQ (from Syncfusion)
    父窗口与子窗口的层次关系
    [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)
    【讨论】不得不重视的问题:信息太多!信息太杂!
    javaScript系列 [08]javaScript和JSON (进阶)
    javaScript系列 [11]Canvas绘图(路径)
    javaScript系列 [10]Canvas绘图(基础)
    Hexo + Github搭建个人博客
    javaScript系列 [07]日期类型和计时器
    javaScript系列 [09]javaScript和JSON (拓展)
  • 原文地址:https://www.cnblogs.com/god-of-death/p/8569609.html
Copyright © 2020-2023  润新知