用I门填充QProg

接口 fill_qprog_by_I 实现用I门填充QProg(量子程序)的功能。

实例

#include "QPanda.h"
USING_QPANDA

int main(void)
{
    auto qvm = initQuantumMachine(QMachineType::CPU);
    auto q = qvm->qAllocMany(4);
    auto c = qvm->cAllocMany(4);

    QCircuit cir;
    QProg prog;

    // 构建量子程序
    cir << CNOT(q[2], q[3])
        << CU(1, 2, 3, 4, q[1], q[0])
        << (H(q[1]))
        << X(q[2])
        << RZ(q[1], PI / 2)
        << Y(q[2])
        << (CR(q[0], q[3], PI / 2))
        << (S(q[2]))
        << S(q[1])
        << RZ(q[1], PI / 2)
        << Y(q[0])
        << SWAP(q[3], q[1]);

    prog << cir << MeasureAll(q, c);

    // 输出原量子程序
    cout << "The source QProg:" << endl;
    cout << prog << endl;

    // 量子程序填充 I 门
    auto filled_prog = fill_qprog_by_I(prog);

    // 输出填充 I 门的量子程序
    cout << "The filled QProg:" << endl;
    cout << filled_prog << endl;

    destroyQuantumMachine(qvm);
    return 0;
}

以上示例程序演示了 fill_qprog_by_I 接口的使用方法,我们可以看到只需要传入一个QProg类型的参数即可,该接口返回一个填充后的新QProg,输入QProg保持不变。 以上示例程序的字符画展示输出结果如下: