.. index:: pair: class; QPanda::QCircuit .. _doxid-class_q_panda_1_1_q_circuit: class QPanda::QCircuit ====================== .. toctree:: :hidden: Overview ~~~~~~~~ Quantum circuit basic abstract class. :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block #include class QCircuit: public :ref:`QPanda::AbstractQuantumCircuit` { public: // construction :target:`QCircuit`(); :target:`QCircuit`(const QCircuit&); :target:`QCircuit`(:ref:`QGate`& gate); :target:`QCircuit`(std::shared_ptr<:ref:`AbstractQuantumCircuit`> node); // methods std::shared_ptr<:ref:`AbstractQuantumCircuit`> :target:`getImplementationPtr`(); virtual void :ref:`pushBackNode`(std::shared_ptr<:ref:`QNode`>); template QCircuit& :ref:`operator <<` (:ref:`T` node); virtual QCircuit :ref:`dagger`(); virtual QCircuit :ref:`control`(const QVec); :ref:`NodeType` :ref:`getNodeType`() const; virtual bool :ref:`isDagger`() const; virtual bool :ref:`getControlVector`(:ref:`QVec`&); virtual :ref:`NodeIter` :ref:`getFirstNodeIter`(); virtual :ref:`NodeIter` :ref:`getLastNodeIter`(); virtual :ref:`NodeIter` :ref:`getEndNodeIter`(); virtual :ref:`NodeIter` :ref:`getHeadNodeIter`(); virtual :ref:`NodeIter` :ref:`insertQNode`(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>); virtual :ref:`NodeIter` :ref:`deleteQNode`(:ref:`NodeIter`&); bool :target:`is_empty`(); virtual void :ref:`setDagger`(bool isDagger); virtual void :ref:`setControl`(const QVec); virtual size_t :ref:`get_used_qubits`(:ref:`QVec`&) const; virtual size_t :ref:`get_qgate_num`(); }; // direct descendants class :ref:`HadamardQCircuit`; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // methods virtual :ref:`NodeIter` :ref:`getFirstNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getLastNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getEndNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`getHeadNodeIter`() = 0; virtual :ref:`NodeIter` :ref:`insertQNode`(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>) = 0; virtual :ref:`NodeIter` :ref:`deleteQNode`(:ref:`NodeIter`&) = 0; virtual void :ref:`pushBackNode`(std::shared_ptr<:ref:`QNode`>) = 0; virtual bool :ref:`isDagger`() const = 0; virtual bool :ref:`getControlVector`(:ref:`QVec`&) = 0; virtual void :ref:`setDagger`(bool isDagger) = 0; virtual void :ref:`setControl`(:ref:`QVec`) = 0; virtual void :ref:`clearControl`() = 0; virtual size_t :ref:`get_used_qubits`(:ref:`QVec`&) const = 0; virtual size_t :ref:`get_qgate_num`() = 0; .. _details-class_q_panda_1_1_q_circuit: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Quantum circuit basic abstract class. Methods ------- .. index:: pair: function; pushBackNode .. _doxid-class_q_panda_1_1_q_circuit_1afee8bb25ac24c51e4c37c5d957139713: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void pushBackNode(std::shared_ptr<:ref:`QNode`>) Insert new Node at the end of current quantum circuit node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QNode\* - quantum node .. rubric:: Returns: void .. rubric:: See also: :ref:`QNode ` .. index:: pair: function; operator<< .. _doxid-class_q_panda_1_1_q_circuit_1a0bfc0cbf8c6e7d8364c7b1c286ff2952: .. ref-code-block:: cpp :class: doxyrest-title-code-block template QCircuit& operator << (:ref:`T` node) Insert new Node at the end of current node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - node - QGate/QCircuit .. rubric:: Returns: :ref:`QPanda::QCircuit ` & quantum circuit .. rubric:: See also: :ref:`QNode ` .. index:: pair: function; dagger .. _doxid-class_q_panda_1_1_q_circuit_1ab3c4c560b2b45b89469a00b38ddbebe9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual QCircuit dagger() Get a dagger circuit base on current quantum circuit node. .. rubric:: Returns: :ref:`QPanda::QCircuit ` quantum circuit .. index:: pair: function; control .. _doxid-class_q_panda_1_1_q_circuit_1a895b9bbb1b6c9bf825436dd8b3d69aa5: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual QCircuit control(const QVec) Get a control quantumgate base on current quantum circuit node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QVec ` - control qubits vector .. rubric:: Returns: :ref:`QPanda::QCircuit ` quantum circuit .. rubric:: See also: :ref:`QVec ` .. index:: pair: function; getNodeType .. _doxid-class_q_panda_1_1_q_circuit_1ab3a37b3d981285ad7127eedbb9e0c6b5: .. ref-code-block:: cpp :class: doxyrest-title-code-block :ref:`NodeType` getNodeType() const Get current node type. .. rubric:: Returns: NodeType current node type .. rubric:: See also: :ref:`NodeType ` .. index:: pair: function; isDagger .. _doxid-class_q_panda_1_1_q_circuit_1aa09cf54785a8c09befeddf5eff6bc4cc: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual bool isDagger() const Judge current quantum circuit is dagger. .. rubric:: Returns: bool .. index:: pair: function; getControlVector .. _doxid-class_q_panda_1_1_q_circuit_1a56414aa73904b6ec9433297a62187101: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual bool getControlVector(:ref:`QVec`&) Get control vector from current quantum circuit node. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - QVec& - qubits vector .. rubric:: Returns: bool .. rubric:: See also: :ref:`QVec ` .. index:: pair: function; getFirstNodeIter .. _doxid-class_q_panda_1_1_q_circuit_1aa469d1cffaf63059e04c3e1dde9d5c1b: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getFirstNodeIter() Get the first :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getLastNodeIter .. _doxid-class_q_panda_1_1_q_circuit_1ad69ffc60fb639ac326e68a72ae26aed9: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getLastNodeIter() Get the last :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getEndNodeIter .. _doxid-class_q_panda_1_1_q_circuit_1aaa07e04eb4206ec2f22288263ff4e868: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getEndNodeIter() Get the end :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; getHeadNodeIter .. _doxid-class_q_panda_1_1_q_circuit_1a57f22108948500db0b56032ceb39a720: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` getHeadNodeIter() Get the head :ref:`NodeIter `. .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; insertQNode .. _doxid-class_q_panda_1_1_q_circuit_1a3bca05ba8250155feacfa03d01b56e8b: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` insertQNode(const :ref:`NodeIter`&, std::shared_ptr<:ref:`QNode`>) Insert a new :ref:`QNode ` at the location specified by :ref:`NodeIter `. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NodeIter& - specified location * - std::shared_ptr - Inserted :ref:`QNode ` .. rubric:: Returns: :ref:`NodeIter ` .. index:: pair: function; deleteQNode .. _doxid-class_q_panda_1_1_q_circuit_1abaca2f9009304097977ab01e5f935009: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual :ref:`NodeIter` deleteQNode(:ref:`NodeIter`&) Delete a :ref:`QNode ` at the location specified by :ref:`NodeIter `. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - NodeIter& - specified location .. rubric:: Returns: :ref:`NodeIter ` Deleted :ref:`NodeIter ` .. index:: pair: function; setDagger .. _doxid-class_q_panda_1_1_q_circuit_1a40036d789e82cbf24f711674a825e7c6: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void setDagger(bool isDagger) Set dagger to current quantum circuit. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - bool - is dagger .. index:: pair: function; setControl .. _doxid-class_q_panda_1_1_q_circuit_1a0217be0bb49add047fdc6f43e40909bb: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual void setControl(const QVec) Set control qubits to current quantum circuit. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QVec ` - control qubits vector .. rubric:: See also: :ref:`QVec ` .. index:: pair: function; get_used_qubits .. _doxid-class_q_panda_1_1_q_circuit_1adba3dfe84e87dbbd3303cc545cb96219: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_used_qubits(:ref:`QVec`&) const Get the used qubits for current quantum circuit. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - :ref:`QVec ` - used qubits vector .. rubric:: Returns: size_t .. index:: pair: function; get_qgate_num .. _doxid-class_q_panda_1_1_q_circuit_1a5d63e1573c3f5d55064a0f9714a8b545: .. ref-code-block:: cpp :class: doxyrest-title-code-block virtual size_t get_qgate_num() Get current quantum circuit qgate number. .. rubric:: Returns: size_t