bir dizeden ardışık boşlukları kaldırmak için std::unique
nasıl kullanılacağı hakkında cppreference bir örnek vardır benzersiz örnek: gereksinimleri bölümünde,std :: hiçbir denklik ilişkisi (ardışık boşlukları kaldırın)
std::string s = "wanna go to space?";
auto end = std::unique(s.begin(), s.end(), [](char l, char r){
return std::isspace(l) && std::isspace(r) && l == r;
});
// s now holds "wanna go to space?xxxxxxxx", where 'x' is indeterminate
std::cout << std::string(s.begin(), end) << '\n';
Ancak Eşsiz o, belirtilen ikili yüklemi s kullanarak karşılaştırılır. Eşdeğerlik ilişkisi değilse, davranışı tanımsızdır. Bu soru şu: geçerli örnek geçerli mi? Öngörücü açıkça yansıtıcı değildir (iki 'n' karakter eşitsizliği karşılaştırır) ve dolayısıyla bir denklik ilişkisi değildir.
Bu bir denkliktir. Tüm boşluklar benzersizdir. – stark
Bu kırılma ('a' a '), simetri doğru (' a ~ b <=> b ~ a ') – Jarod42
@ Jarod42: Evet, ben sadece düzeltildi, yansıma – Andre