Program Listing for File qubit_table.hpp¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/qulacs-rtd/checkouts/v0.6.7/src/cppsim/qubit_table.hpp
)
#pragma once
#include <unordered_set>
#include "type.hpp"
class QuantumCircuit;
class QuantumGateBase;
class QubitTable {
private:
UINT _qubit_count;
std::vector<UINT> _p2l_table;
std::vector<UINT> _l2p_table;
QubitTable& operator=(const QubitTable&) = delete;
public:
const std::vector<UINT>&
p2l;
const std::vector<UINT>&
l2p;
explicit QubitTable(UINT qubit_count);
QubitTable(const QubitTable& qt);
friend std::ostream& operator<<(std::ostream& os, const QubitTable& qt) {
os << "qc:" << qt._qubit_count;
os << ", p2l:[";
for (UINT i : qt._p2l_table) {
os << i << ",";
}
os << "], l2p[";
for (UINT i : qt._l2p_table) {
os << i << ",";
}
os << "]";
return os;
}
void rewrite_gate_qubit_indexes(QuantumGateBase* g) const;
UINT add_swap_gate(
QuantumCircuit* circuit, UINT idx0, UINT idx1, UINT width);
UINT add_swap_gate(QuantumCircuit* circuit, UINT idx0, UINT idx1,
UINT width, UINT gate_pos);
};