diff --git a/work20220401/neoString/CString.cpp b/work20220401/neoString/CString.cpp index 3aa1b71..45c6f7d 100644 --- a/work20220401/neoString/CString.cpp +++ b/work20220401/neoString/CString.cpp @@ -3,6 +3,8 @@ // #include +#include + #include "CString.h" /* @@ -40,7 +42,7 @@ bool CString::operator==(const CString &source) const { } // 以上情况都不符合时才进行逐字比较 - int compareLength = source.length < length ? source.length : length; + int compareLength = std::min(source.length, length); for (int i = 0; i < compareLength; ++i) { if (data[i] != source.data[i]) { return false; @@ -107,17 +109,13 @@ CString::CString(const CString &source) : CString(source.data, source.length) {} * 按照字典顺序逐字对比 */ bool CString::operator<(const CString &source) const { - // 这部分类似于前边==重载的前置判断 - if (source.length != length || data == nullptr) { + // 这部分类似于前边==重载的前置判断,如果本对象数据为null或者两对象数据是一回事就直接false + if (data == nullptr || (source.length != length && source.data == data)) { return false; - } else { - if (source.data == data) { - return true; - } } // 以上情况都不符合时才进行逐字比较 - int compareLength = source.length < length ? source.length : length; + int compareLength = std::min(source.length, length); for (int i = 0; i < compareLength; ++i) { if (data[i] < source.data[i]) { return true;