class QPanda::Variational::VariationalQuantumCircuit

#include <var.h>

class VariationalQuantumCircuit
{
public:
    // construction

    VariationalQuantumCircuit();
    VariationalQuantumCircuit(const VariationalQuantumCircuit&);
    VariationalQuantumCircuit(QCircuit);

    // methods

    std::vector<var>& get_vars();
    QCircuit feed(const std::vector<std::tuple<std::weak_ptr<VariationalQuantumGate>, size_t, double>>) const;
    QCircuit feed();
    std::vector<std::weak_ptr<VariationalQuantumGate>> get_var_in_which_gate(const var&) const;

    template <typename VQG_Ty>
    VariationalQuantumCircuit& insert(VQG_Ty gate);

    bool set_dagger(bool dagger);
    bool set_control(QVec control_qubit);
    bool is_dagger();
    QVec get_control_qubit();
    VariationalQuantumCircuit dagger();
    VariationalQuantumCircuit control(QVec qv);
    VariationalQuantumCircuit& insert(VariationalQuantumCircuit circuit);
    VariationalQuantumCircuit& insert(QGate& gate);
    VariationalQuantumCircuit& insert(QGate gate);
    VariationalQuantumCircuit& insert(QCircuit c);
};