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:

QNode

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:

QNode

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:

QVec

control qubits vector

Returns:

QPanda::QCircuit quantum circuit

See also:

QVec

NodeType getNodeType() const

Get current node type.

Returns:

NodeType current node type

See also:

NodeType

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:

QVec

virtual NodeIter getFirstNodeIter()

Get the first NodeIter.

Returns:

NodeIter

virtual NodeIter getLastNodeIter()

Get the last NodeIter.

Returns:

NodeIter

virtual NodeIter getEndNodeIter()

Get the end NodeIter.

Returns:

NodeIter

virtual NodeIter getHeadNodeIter()

Get the head NodeIter.

Returns:

NodeIter

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:

NodeIter

virtual NodeIter deleteQNode(NodeIter&)

Delete a QNode at the location specified by NodeIter.

Parameters:

NodeIter&

specified location

Returns:

NodeIter Deleted NodeIter

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:

QVec

control qubits vector

See also:

QVec

virtual size_t get_used_qubits(QVec&) const

Get the used qubits for current quantum circuit.

Parameters:

QVec

used qubits vector

Returns:

size_t

virtual size_t get_qgate_num()

Get current quantum circuit qgate number.

Returns:

size_t