File tree 1 file changed +11
-14
lines changed
1 file changed +11
-14
lines changed Original file line number Diff line number Diff line change @@ -147,22 +147,19 @@ struct SparseXorVec {
147
147
void xor_item (const T &item) {
148
148
// Just do a linear scan to find the insertion point, instead of a binary search.
149
149
// This is faster at small sizes, and complexity is linear anyways due to the shifting of later items.
150
- auto it = sorted_items.begin ();
151
- while (true ) {
152
- if (it == sorted_items.end ()) {
153
- sorted_items.push_back (item);
154
- break ;
150
+ for (size_t k = 0 ; k < sorted_items.size (); k++) {
151
+ const auto &v = sorted_items[k];
152
+ if (v < item) {
153
+ continue ;
154
+ } else if (v == item) {
155
+ sorted_items.erase (sorted_items.begin () + k);
156
+ return ;
157
+ } else {
158
+ sorted_items.insert (sorted_items.begin () + k, item);
159
+ return ;
155
160
}
156
- if (!(*it < item)) {
157
- if (*it == item) {
158
- sorted_items.erase (it);
159
- } else {
160
- sorted_items.insert (it, item);
161
- }
162
- break ;
163
- }
164
- it++;
165
161
}
162
+ sorted_items.push_back (item);
166
163
}
167
164
168
165
SparseXorVec &operator ^=(const SparseXorVec<T> &other) {
You can’t perform that action at this time.
0 commit comments