我有一个QVector的对象实例,名为Atom。每个Atom实例都包含一组笛卡尔坐标和唯一的索引标识符,以及其他属性。我还定义了一个Dyad容器,它只是两个Atom实例的元组。基本上,如果我的两个Atom实例满足距离约束,我想能够构建一个Dyad的QList。
假设我有一个Dyad(Atom1,Atom2),如何确保我的QList没有包含(Atom2,Atom1)的Dyad?
我已经尝试使用QList.contains()函数并重载了我的==运算符,但我无法使其工作。如果需要,我可以附上到目前为止尝试使用contains()函数的代码。
// 函数定义
QList getUniqueAtomPairs(QVector atomVector) {
假设我有一个Dyad(Atom1,Atom2),如何确保我的QList没有包含(Atom2,Atom1)的Dyad?
我已经尝试使用QList.contains()函数并重载了我的==运算符,但我无法使其工作。如果需要,我可以附上到目前为止尝试使用contains()函数的代码。
// 函数定义
QList getUniqueAtomPairs(QVector atomVector) {
QList<AtomDyad> AtomDyadPairList;
for (int iatom = 0; iatom < atomVector.size(); iatom++) {
for (int jatom = 0; jatom < atomVector.size(); jatom++) {
if (iatom == jatom) { continue; }
float x1 = atomVector[jatom].getX();
float x2 = atomVector[iatom].getX();
float y1 = atomVector[jatom].getY();
float y2 = atomVector[iatom].getY();
float z1 = atomVector[jatom].getZ();
float z2 = atomVector[iatom].getZ();
float Radii_Sum1 = atomVector[jatom].getvdW_radius(atomVector[jatom]) + atomVector[iatom].getvdW_radius(atomVector[iatom]);
if (DistanceBetween3DPoints(x1, x2, y1, y2, z1, z2) <= Radii_Sum1) {
AtomDyad MyDyad(atomVector[iatom], atomVector[jatom]);
// How can I ensure that MyDyad(atomVector[jatom], atomVector[iatom]) does not already exist?
AtomDyadPairList.append(MyDyad);
}
}
}
return AtomDyadPairList;