我是C ++的新手,我正在研究一种方法,该方法将使用==运算符检查两个列表是否相同。这是我现在的代码。
bool List::operator==(const List& original) const {
if(this != &original){
if( mySize != original.getSize() ) { return false; }
unsigned counter = 0;
Node * nPtr = original.myFirst;
Node * myPtr = myFirst;
while (counter < mySize ) {
if( this->myFirst == nPtr ) {
if (counter == 0){
counter++;
nPtr = nPtr->myNext;
}
if (myFirst->myNext == nPtr) {
counter ++;
nPtr = nPtr->myNext;
}
} else {
return false;
}
}
}
return true; }
所以,根据我的理解,这是我的代码正在做的事情。它检查它们的地址是否相同,如果是,则返回true。否则,它会检查它们的大小是否相同。如果不是,则返回false。如果为true,则遍历列表并检查从第一个地址开始直到达到最后一个地址的不同值。
然而,我写的这个测试没有通过,我不确定为什么或如何:
List list3;
list3.append(33);
List list4;
list4.append(33); // [33]
assert( list4 == list3 );
assert( list3 == list4 );
cout << " 3 " << flush;
我的追加方法为列表添加了一定的值,我测试了它。这种方法很好。
我意识到这个问题可能与this已经问到的问题相似,但这对我没什么帮助。感谢您提供的任何帮助!