class QPanda::QProg¶
Overview¶
Quantum program,can construct quantum circuit,data struct is linked list. More…
#include <QProgram.h> class QProg: public QPanda::AbstractQuantumProgram { public: // construction QProg(); QProg(const QProg&); template <typename Ty> QProg(Ty& node); QProg(std::shared_ptr<QNode>); QProg(std::shared_ptr<AbstractQuantumProgram>); QProg(ClassicalCondition& node); QProg(QProg& other); // methods std::shared_ptr<AbstractQuantumProgram> getImplementationPtr(); virtual void pushBackNode(std::shared_ptr<QNode>); template <typename T> QProg& operator << (T node); 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&); NodeType getNodeType() const; virtual void clear(); bool is_empty(); virtual size_t get_max_qubit_addr(); virtual size_t get_used_qubits(QVec&); virtual size_t get_used_cbits(std::vector<ClassicalCondition>&); virtual size_t get_qgate_num(); virtual bool is_measure_last_pos(); virtual std::map<Qubit*, bool> get_measure_pos(); virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits(); };
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 void clear() = 0; virtual size_t get_max_qubit_addr() = 0; virtual size_t get_used_qubits(QVec&) = 0; virtual size_t get_used_cbits(std::vector<ClassicalCondition>&) = 0; virtual size_t get_qgate_num() = 0; virtual bool is_measure_last_pos() = 0; virtual std::map<Qubit*, bool> get_measure_pos() = 0; virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits() = 0;
Detailed Documentation¶
Quantum program,can construct quantum circuit,data struct is linked list.
Methods¶
virtual void pushBackNode(std::shared_ptr<QNode>)
Insert a new Node at the end of current quantum circuit.
Parameters:
QNode* |
quantum node |
Returns:
void
See also:
template <typename T> QProg& operator << (T node)
Insert new Node at the end of current node.
if T_GATE is QSingleGateNode/QDoubleGateNode/QIfEndNode, deep copy T_GATE and insert it into left QProg; if T_GATE is QIfProg/QWhileProg/QProg,deepcopy IF/WHILE/QProg circuit and insert it into left QProg
Parameters:
Node |
QGate/QCircuit/QProg/QIf/QWhile |
Returns:
QPanda::QProg & quantum program
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 clear()
Clear all node in current quantum program node.
virtual size_t get_max_qubit_addr()
Gets the maximum physical address of used qubits.
Returns:
size_t maximum physical address
virtual size_t get_used_qubits(QVec&)
Get the used qubits for current quantum program.
Parameters:
used qubits vector |
Returns:
size_t
virtual size_t get_used_cbits(std::vector<ClassicalCondition>&)
Get the used classical bits for current quantum program.
Parameters:
used qubits vector |
Returns:
size_t
virtual size_t get_qgate_num()
Get current quantum program qgate number.
Returns:
size_t
virtual bool is_measure_last_pos()
Measure operation in the last position of the program.
Returns:
bool
virtual std::map<Qubit*, bool> get_measure_pos()
Get Measure operation position of the program.
Returns:
std::map<Qubit*, bool>
virtual std::vector<std::pair<Qubit*, ClassicalCondition>> get_measure_qubits_cbits()
Get Measure operation qubits and cbits vector.
Returns:
std::vector<std::pair<Qubit*, ClassicalCondition>>