Apakah ada fungsi vektor bawaan di C ++ untuk membalikkan vektor pada tempatnya?
Atau apakah Anda hanya perlu melakukannya secara manual?
Ada fungsi std::reverse
di algorithm
header untuk tujuan ini.
#include <vector>
#include <algorithm>
int main() {
std::vector<int> a;
std::reverse(a.begin(), a.end());
return 0;
}
Semua wadah menawarkan tampilan kontennya yang terbalik dengan
rbegin()
danrend()
. Kedua fungsi ini mengembalikan apa yang disebut iterator terbalik , yang dapat digunakan seperti yang normal, tetapi akan terlihat seperti wadah yang sebenarnya terbalik.Contoh langsung di Ideone . Keluaran:
sumber
std::sort
vektor elemen 1000, jika Anda hanya perlu top-10 dalam urutan yang tidak ditentukan, karena lebih elegan daripadastd::partition
? Ini adalah aliran pemikiran yang melumpuhkan pengalaman PC saya hari ini seperti yang terjadi 15 tahun yang lalu, dengan perbedaan bahwa lebih banyak siklus terbuang, miliaran dari mereka.print_range
tidak benar: itu tidak akan berfungsi ketika rentang kosong dilewatkan.std::reverse(a.rbegin(), a.rend())
dilakukan? ; ^)Anda bisa menggunakan
std::reverse
seperti inisumber
Anda juga dapat menggunakan
std::list
bukanstd::vector
.list
memiliki daftar fungsi bawaan :: membalikkan untuk membalikkan elemen.sumber
Seringkali alasan Anda ingin membalikkan vektor adalah karena Anda mengisinya dengan mendorong semua item pada akhirnya tetapi sebenarnya menerimanya dengan urutan terbalik. Dalam hal ini Anda dapat membalikkan wadah saat Anda pergi dengan menggunakan
deque
gantinya dan mendorongnya langsung di depan. (Atau Anda bisa memasukkan item di depan denganvector::insert()
gantinya, tapi itu akan lambat ketika ada banyak item karena harus mengocok semua item lainnya untuk setiap penyisipan.) Jadi, berbeda dengan:Anda bisa melakukannya:
sumber
sumber