|
|
@@ -96,8 +96,12 @@ public:
|
|
|
void clear();
|
|
|
private:
|
|
|
friend bool operator==(trie const & lhs, trie const & rhs) {
|
|
|
- auto it1 = lhs.begin(), it2 = rhs.begin(), end1 = lhs.end(), end2 = lhs.end();
|
|
|
- for ( ; it1 != end1 && it2 != end2 && it1 == it2; ++it1, ++it2 );
|
|
|
+ if (lhs.value() != rhs.value()) { return false; }
|
|
|
+ auto it1 = ++lhs.begin(), it2 = ++rhs.begin(), end1 = lhs.end(), end2 = lhs.end();
|
|
|
+ for ( ; it1 != end1 && it2 != end2; ++it1, ++it2 ) {
|
|
|
+ if (it1.keys.back() != it2.keys.back()) { return false; }
|
|
|
+ else if (*it1 != *it2) { return false; }
|
|
|
+ }
|
|
|
return it1 == end1 && it2 == end2;
|
|
|
}
|
|
|
friend void swap(trie & lhs, trie & rhs) {
|