Jawaban SO ini mengatakan bahwa STL Map dengan Vector for Key , vektor dapat digunakan sebagai kunci. Jadi ketika kita menggunakan vektor sebagai kunci. Bagaimana cara kerjanya karena kunci harus unik sehingga ketika kita memasukkan vektor lain dengan elemen yang sama akankah map
memeriksa duplikat elemen demi elemen atau nama vektor menentukan sesuatu? Seperti nama array mewakili alamat basis. Jadi array dapat digunakan sebagai kunci karena alamat dasar dapat digunakan sebagai kunci dalam kasus ini, tetapi apa kunci dalam kasus vektor. Bagaimana cara kerjanya secara internal.
Karena ketika saya mencetak nama vektor, saya mendapatkan kesalahan
vector<int> v;
cout<<v; //error
has operators == and <
bagaimana itu membantu? pertanyaan saya adalah untuk memeriksa elemen duplikat akan memetakan membandingkan elemen kunci vektor dengan elemenstd::vector
kuncistd::map
. Anda membayar apa yang Anda gunakan . Ini bisa dilakukan, dan mungkin ada beberapa kasus penggunaan untuk itu, tetapi yang paling pasti Anda dapat mengubah struktur data pilihan Anda. Wadah STL dirancang agar fleksibel dan dapat digunakan dengan cara apa pun yang diinginkan pengguna untuk menggunakannya.std::map
akan menyalin kunci dan nilai ke dalam dirinya sendiri.std::unordered_map
dapat menyimpan hash kunci.Jawaban:
Ada operator kelebihan <untuk template kelas std :: vector.
yang didasarkan pada algoritma standar
std::lexicographical_compare
.Ini adalah program demonstratif.
Outputnya adalah
Sehingga kelas dapat digunakan sebagai kunci dalam peta.
Secara default peta templat kelas menggunakan objek fungsi std :: less yang pada gilirannya menggunakan operator <
Namun tidak ada operator kelebihan << untuk std template class :: vektor.
sumber
Nama suatu benda dan isi benda itu selalu merupakan hal yang tidak berkaitan.
operator ==
karenastd::vector
pertama-tama akan membandingkan panjang vektor dan kemudian masing-masing elemen itu menggunakanoperator ==
juga.operator <
membandingkan elemen dalam vektor secara leksikografis, yaitu mengembalikanx[i] < y[i]
untuk elemen tidak sama pertama dalam vektorx
dany
.Ini adalah persyaratan
std::map
untuk tipe yang digunakanKey
. Karenastd::vector
memenuhi keduanya, dapat digunakan oleh sebagaiKey
. Perhatikan bahwa jenis yang dikelola oleh vektor juga harus membuat operator ini kelebihan beban agar dapat berfungsi (karenastd::vector
bergantung pada operator tersebut untuk mengimplementasikan operatornya sendiri).sumber