Nếu tôi hiểu đúng, remove
không thực sự hoán đổi bất kỳ phần tử nào mà chỉ di chuyển các phần tử mà vị từ (trong trường hợp remove_if
) là sai cho phần đầu của chuỗi. Nếu bạn có
a = [1,1,1,2,3]
và gọi remove(a.begin(),a.end(),1)
, bạn sẽ phải
a = [2,3,1,2,3]
sau đó. remove
trả về một trình lặp cho phần tử thứ ba trong trường hợp này (nếu tôi nhớ chính xác ...)
partition
mặt khác giữ lại tất cả các phần tử gốc của chuỗi nhưng thay đổi thứ tự của chúng sao cho các phần tử mà vị từ đã cho là đúng được đặt trước các phần tử không phải là nó.
partition(a.begin(), a.end(), not_equal<int>(1))
mang
a = [2,3,1,1,1]
cảm ơn, tôi hiểu rằng –