2016-03-25 20 views
0

başkasının kodunu okuyorum, ve böyle bir şey görmek ile std sıralama:C++ özdeş argümanlar

sort(myvec.begin(), myvec.begin()); 

Bunu test etmek için bazı kod yazdım ve o

aynı şeyi yapmak gibi görünüyor
sort(myvec.begin(), myvec.end()); 

Gerçekten aynı şeyi yapıyorlar mı? Bu belgelenmiş mi? Nedenini anlamanın bir yolu var mı, yoksa bu şekilde uygulamak için sadece keyfi bir seçim miydi? cevaplar

sonra

Güncelleme Evet, no-operasyon. Test kodumda bir hata vardı. yani boş aralık beri

+0

, 'std :: sort' şey yapmamalıyız olmalıdır. – Mahesh

cevap

4

kod

sort(myvec.begin(), myvec.begin()); 

, no-op olmalıdır. Kod

sort(myvec.begin(), myvec.end()); 

myvec tüm içeriğini sıralanır. Eğer bunlar aynı şeyi yaparsa, bu sizin vektörünüzün zaten sıralandığı anlamına gelir. İlk satır neredeyse kesinlikle bir yazım hatası veya gerçekleşmesini bekleyen bir hatadır.

1

Yineleyiciler, yalnızca aralıkları belirtmenin bir yoludur. Bu kodun düzgün bir şekilde çalışabileceğini düşündüğünüzde, bunlar hakkında kötü sezgilerin olması gerekir. 2 indeksi alan bir yöntem kullansaydık -> sıralanmış olan vektörün dizinini ve endeksin endikasyonunu gösteren endeksi başlatırsak. sort(0, myvec.size()) ve sort(0, 0) mu eşdeğer olur?

Bu kod rahatlıkla sort(myvec.begin(), myvec.end()); İlk durumda