class QPanda::QCircuit¶
Overview¶
Quantum circuit basic abstract class. More…
#include <QCircuit.h> class QCircuit: public QPanda::AbstractQuantumCircuit { public: // construction QCircuit(); QCircuit(const QCircuit&); QCircuit(QGate& gate); QCircuit(std::shared_ptr<AbstractQuantumCircuit> node); // methods std::shared_ptr<AbstractQuantumCircuit> getImplementationPtr(); virtual void pushBackNode(std::shared_ptr<QNode>); template <typename T> QCircuit& operator << (T node); virtual QCircuit dagger(); virtual QCircuit control(const QVec); NodeType getNodeType() const; virtual bool isDagger() const; virtual bool getControlVector(QVec&); virtual NodeIter getFirstNodeIter(); virtual NodeIter getLastNodeIter(); virtual NodeIter getEndNodeIter(); virtual NodeIter getHeadNodeIter(); virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>); virtual NodeIter deleteQNode(NodeIter&); bool is_empty(); virtual void setDagger(bool isDagger); virtual void setControl(const QVec); virtual size_t get_used_qubits(QVec&) const; virtual size_t get_qgate_num(); }; // direct descendants class HadamardQCircuit;
Inherited Members¶
public: // methods virtual NodeIter getFirstNodeIter() = 0; virtual NodeIter getLastNodeIter() = 0; virtual NodeIter getEndNodeIter() = 0; virtual NodeIter getHeadNodeIter() = 0; virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>) = 0; virtual NodeIter deleteQNode(NodeIter&) = 0; virtual void pushBackNode(std::shared_ptr<QNode>) = 0; virtual bool isDagger() const = 0; virtual bool getControlVector(QVec&) = 0; virtual void setDagger(bool isDagger) = 0; virtual void setControl(QVec) = 0; virtual void clearControl() = 0; virtual size_t get_used_qubits(QVec&) const = 0; virtual size_t get_qgate_num() = 0;
Detailed Documentation¶
Quantum circuit basic abstract class.
Methods¶
virtual void pushBackNode(std::shared_ptr<QNode>)
Insert new Node at the end of current quantum circuit node.
Parameters:
QNode* |
quantum node |
Returns:
void
See also:
template <typename T> QCircuit& operator << (T node)
Insert new Node at the end of current node.
Parameters:
node |
QGate/QCircuit |
Returns:
QPanda::QCircuit & quantum circuit
See also:
virtual QCircuit dagger()
Get a dagger circuit base on current quantum circuit node.
Returns:
QPanda::QCircuit quantum circuit
virtual QCircuit control(const QVec)
Get a control quantumgate base on current quantum circuit node.
Parameters:
control qubits vector |
Returns:
QPanda::QCircuit quantum circuit
See also:
NodeType getNodeType() const
Get current node type.
Returns:
NodeType current node type
See also:
virtual bool isDagger() const
Judge current quantum circuit is dagger.
Returns:
bool
virtual bool getControlVector(QVec&)
Get control vector from current quantum circuit node.
Parameters:
QVec& |
qubits vector |
Returns:
bool
See also:
virtual NodeIter getFirstNodeIter()
Get the first NodeIter.
Returns:
virtual NodeIter getLastNodeIter()
Get the last NodeIter.
Returns:
virtual NodeIter getEndNodeIter()
Get the end NodeIter.
Returns:
virtual NodeIter getHeadNodeIter()
Get the head NodeIter.
Returns:
virtual NodeIter insertQNode(const NodeIter&, std::shared_ptr<QNode>)
Insert a new QNode at the location specified by NodeIter.
Parameters:
NodeIter& |
specified location |
std::shared_ptr<QNode> |
Inserted QNode |
Returns:
virtual NodeIter deleteQNode(NodeIter&)
Delete a QNode at the location specified by NodeIter.
Parameters:
NodeIter& |
specified location |
Returns:
virtual void setDagger(bool isDagger)
Set dagger to current quantum circuit.
Parameters:
bool |
is dagger |
virtual void setControl(const QVec)
Set control qubits to current quantum circuit.
Parameters:
control qubits vector |
See also:
virtual size_t get_used_qubits(QVec&) const
Get the used qubits for current quantum circuit.
Parameters:
used qubits vector |
Returns:
size_t
virtual size_t get_qgate_num()
Get current quantum circuit qgate number.
Returns:
size_t