Bagaimana saya bisa mendapatkan nilai max (atau min) dalam vektor di C ++ ?
Saya telah melihat beberapa solusi untuk ini di Google tetapi tidak ada yang masuk akal bagi saya :(
Bisakah seseorang menjelaskan dengan cara noob langsung yang mudah dan mudah bagaimana cara mendapatkan nilai maks atau min dari vektor? dan apakah saya salah dalam mengasumsikan itu akan kurang lebih sama dengan array?
Saya butuh iterator kan? Saya mencobanya max_element
tetapi terus mendapatkan kesalahan?
vector<int>::const_iterator it;
it = max_element(cloud.begin(), cloud.end());
kesalahan: permintaan untuk anggota 'mulai' di 'cloud', yang merupakan tipe non-kelas 'int [10]'
EDIT: Saya tidak dapat menjawab pertanyaan saya sendiri ??? jadi saya akan taruh di sini ...
Wow, terima kasih atas balasannya yang cepat! Saya akhirnya melakukannya dengan cara ini, apakah menurut Anda tidak apa-apa?
for (unsigned int i = 0; i < cdf.size(); i++)
if (cdf[i] < cdfMin)
cdfMin = cdf[i];
dimana cdf
vektor.
cloud
bukan wadah STL, melainkanint[10]
. Pada dasarnya,cloud
tidak memiliki anggota.begin()
. Mungkin ingin mendapatkan buku C ++ dasar kecuali Anda hanya melakukan satu hal ini.int[10]
". Bagaimana bisa itu menjadi vektor?Jawaban:
Dengan menggunakan flag kompilasi c ++ 11 / c ++ 0x, Anda bisa
Jika tidak, tulis sendiri:
Lihat langsung di http://ideone.com/aDkhW :
Oh, dan gunakan
std::minmax_element(...)
jika Anda membutuhkan keduanya sekaligus: /sumber
Jika Anda ingin menggunakan fungsi tersebut
std::max_element()
, cara yang harus Anda lakukan adalah:Saya harap ini bisa membantu.
sumber
*
di*max_element
?Membiarkan,
Jika vektor diurutkan dalam urutan menaik atau menurun maka Anda dapat menemukannya dengan kompleksitas O (1).
Untuk vektor dengan urutan menaik, elemen pertama adalah elemen terkecil, Anda bisa mendapatkannya dengan v [0] (pengindeksan berbasis 0) dan elemen terakhir adalah elemen terbesar, Anda bisa mendapatkannya dengan v [sizeOfVector-1].
Jika vektor diurutkan dalam urutan menurun maka elemen terakhir adalah elemen terkecil, Anda bisa mendapatkannya dengan v [sizeOfVector-1] dan elemen pertama adalah elemen terbesar, Anda bisa mendapatkannya dengan v [0].
Jika vektor tidak diurutkan maka Anda harus melakukan iterasi pada vektor untuk mendapatkan elemen terkecil / terbesar. Dalam hal ini kompleksitas waktu adalah O (n), di sini n adalah ukuran vektor.
Anda dapat menggunakan iterator,
Anda dapat menghitungnya di bagian input (ketika Anda harus menemukan elemen terkecil atau terbesar dari vektor tertentu)
Anda juga bisa mendapatkan elemen terkecil / terbesar dengan fungsi bawaan
Anda bisa mendapatkan elemen terkecil / terbesar dari rentang apa pun dengan menggunakan fungsi ini. seperti,
Saya telah menggunakan asterisk (*), sebelum fungsi min_element () / max_element (). Karena keduanya mengembalikan iterator. Semua kode dalam c ++.
sumber
min_element
danmax_element
mengembalikan iterator , bukan pointer. Namun, untuk menjadi benar secara teknis sebuah pointer adalah bagian dari iterator. Lihat: stackoverflow.com/questions/2728190/…Dengan asumsi cloud,
int cloud[10]
Anda dapat melakukannya seperti ini:int *p = max_element(cloud, cloud + 10);
sumber
Anda dapat mencetaknya langsung menggunakan fungsi max_element / min_element. Misalnya:
sumber
Di c ++ 11, Anda dapat menggunakan beberapa fungsi seperti itu:
sumber
std::max_element
karena ...?Jika ingin menggunakan iterator, Anda bisa melakukan penempatan-baru dengan array.
Perhatikan kekurangan file
()
di akhir, itu penting. Ini membuat kelas array yang menggunakan memori itu sebagai penyimpanannya, dan memiliki fitur STL seperti iterator.(Omong-omong, ini adalah C ++ TR1 / C ++ 11)
sumber
Anda dapat menggunakan max_element untuk mendapatkan nilai maksimum dalam vektor. Max_element mengembalikan iterator ke nilai terbesar dalam rentang, atau terakhir jika rentang kosong. Karena iterator seperti pointer (atau Anda dapat mengatakan pointer adalah bentuk iterator), Anda dapat menggunakan * sebelum itu untuk mendapatkan nilainya. Jadi sesuai masalah Anda bisa mendapatkan elemen maksimum dalam vektor sebagai:
Ini akan memberi Anda elemen maksimum dalam vektor "awan" Anda. Semoga membantu.
sumber
Hanya ini:
sumber
int cloud[10];
dan itu adalah penggunaan angka ajaib.Cara nooby lengkap ... di C
sumber
vector
for
loop. Secara keseluruhan, jawaban yang sangat buruk.