Bir STL vektörünü iki farklı karşılaştırma kriterine göre nasıl sıralayabilirim? Varsayılan sort() işlevi yalnızca tek bir sıralayıcı nesnesi alır.Bir STL vektörünün iki değerde ayrılması
cevap
İki kriteri bir arada birleştirmeniz gerekir. Her bir yapı, bir birinci ve ikinci alan ile birinci alana, sonra ikinci alana göre nasıl sıraladığınıza bir örnek.
#include <algorithm>
struct MyEntry {
int first;
int second;
};
bool compare_entry(const MyEntry & e1, const MyEntry & e2) {
if(e1.first != e2.first)
return (e1.first < e2.first);
return (e1.second < e2.second);
}
int main() {
std::vector<MyEntry> vec = get_some_entries();
std::sort(vec.begin(), vec.end(), compare_entry);
}
NOT: Nawaz kodunu kullanmak için güncellendi compare_entry
uygulanması.
+1, Öne doğru. Ben de aynı şekilde düşündüm. Yine de OP'nin aynı çizgide düşünmesi şüphesiz. – iammilind
Harika, işe yaradı, teşekkürler! Eğer (e1.first == e2.first) kısmını unuttum, bu yüzden benim için başarısız oldu. – toastie
@Michael: "compary_entry" işlevinin başka bir uygulamasını ekledim. Umarım senin için iyidir. :-) +1 BTW. – Nawaz
- 1. Bir STL vektörünün içindeki bir C++ STL vektörünü bulmak için
- 2. anahtarı, bir değerde
- 3. Saatlerin saat yönünün ayrılması
- 4. Bir kürenin dönme vektörünün hesaplanması
- 5. STL
- 6. Bir dizinin Ruby'deki bir bölümünün ayrılması
- 7. Genel liste iki veya daha fazla değerde sırala
- 8. İki değerde aynı kafa yapıcısına sahip olduğunu kontrol etme
- 9. __m256i vektörünün karıştırıcı unsurları
- 10. "discrete_distribution" vektörünün ayarlanması C++
- 11. C++ Bir STL :: multimap
- 12. SSE şamandıra vektörünün azaltılması
- 13. monadik değerde kasa
- 14. Endişelerin ayrılması ve polimorfik tasarım
- 15. target-c tekil bellek ayrılması
- 16. Std :: vektörünün kendisi kararlı mı?
- 17. Belirli bir değerde MySQL count sütunları
- 18. STL vektörlerini karşılaştırmak için bu iki yol arasındaki fark nedir?
- 19. Matplotlib - Tekil değerde kontur çizimi
- 20. core.logic birleştirme eşlemede değil, değerde eşleşiyor
- 21. Özel üye değişken vektörünün şablonlandırılmış bir sınıfta başlatılması
- 22. R - ODK temizlemede düzensiz verilerin ayrılması
- 23. Nhibernate sonuçlarının bölümlere ayrılması "Üyeyi belirleyemedi"
- 24. Python çoklu işlem modülü kullanılarak başlatılan bir alt işlemin ayrılması
- 25. Tasarım mantığının arkasında STL
- 26. STL takas dönüşü mü?
- 27. STL vektörü nasıl sıralanır?
- 28. 2 paramlı yığın STL
- 29. C Analog To STL
- 30. Neden C++ STL
Daha fazla detay verebilir misiniz? Hangi kriterleri istiyorsun? – iammilind
Daha fazla bilgi için –
İki farklı özelliği olan nesnelerin listesini sıralıyorum: mesafe ve önem. Bu özelliklerin bir karşılaştırması (daha yüksek önem) diğerini geçersiz kılar (daha yakın mesafe). Öyleyse, bir nesnenin itirazları 1 ve diğerinin 0 olması durumunda, mesafenin daha büyük olmasına rağmen, ikinci olandan daha yüksek sıralanacaktır. Sadece bir karşılaştırma yaparak bunu yapmanın bir yolunu anlayamıyorum. – toastie