Remove duplicates and preserve order.
| 82 | |
| 83 | // Remove duplicates and preserve order. |
| 84 | inline void removeDuplicates(QList<QByteArrayView>& parts) |
| 85 | { |
| 86 | std::unordered_set<QByteArray, std::hash<QByteArray>> seen; |
| 87 | |
| 88 | auto newEnd = std::remove_if(parts.begin(), parts.end(), [&seen](const QByteArrayView& v) { |
| 89 | QByteArray key(v.data(), v.size()); // copy once per unique value |
| 90 | if (seen.find(key) != seen.end()) |
| 91 | return true; // duplicate, remove |
| 92 | seen.insert(std::move(key)); |
| 93 | return false; // first occurrence, keep |
| 94 | }); |
| 95 | |
| 96 | parts.erase(newEnd, parts.end()); |
| 97 | } |
| 98 | |
| 99 | |
| 100 | // Remove only *consecutive* duplicates. |
no test coverage detected