GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya tahu jika std::map insert berhasil atau gagal?

Nyatanya metode penyisipan yang mengambil parameter petunjuk tidak mengembalikan apakah penyisipan berhasil atau tidak. Salah satu cara untuk memeriksa apakah penyisipan benar-benar terjadi adalah dengan memeriksa ukuran peta sebelum dan sesudah penyisipan. Jika sama, maka penyisipan gagal (yaitu kuncinya sudah ada). Saya tahu kedengarannya jelek, tapi itulah cara paling efisien yang bisa saya lakukan. Sebenarnya saya percaya bahwa tidak ada alasan kuat bahwa sisipan dengan petunjuk tidak boleh mengembalikan pasangan (termasuk bool) seperti halnya sisipan non-petunjuk biasa. Namun setelah ditentukan dalam standar yang lebih lama, sangat sulit untuk mengubahnya, karena ini merupakan perubahan yang merusak, yang sebagian besar dibenci oleh komunitas C++.

Jawaban asli (salah)

Lihat tautan ini

... mengembalikan pasangan, dengan anggotanya pair::first setel ke iterator yang menunjuk ke elemen yang baru disisipkan atau ke elemen yang sudah memiliki nilai yang sama di peta. pair::second elemen dalam pasangan disetel ke benar jika elemen baru dimasukkan atau salah jika ada elemen dengan nilai yang sama.

Tautan tersebut juga berisi contoh

Misalnya:

if(mp.insert(make_pair(key, value)).second == false)
{
   cout << "Insertion failed. Key was present"
}

typedef std::map<std::string, int> map;
map m;
std::pair<map::iterator,bool> result = m.insert(std::make_pair("hi", 42));

result.second berisi apa yang Anda inginkan


Tergantung apa yang Anda maksud dengan gagal atau berhasil.

std::map::insert berhasil saat menyisipkan elemen baru, jika tidak, ia mengembalikan iterator ke elemen yang sudah ada.

std::map::insert gagal jika tidak ada cukup memori untuk memasukkan elemen baru dan melempar std::bad_alloc .


Linux
  1. Bagaimana Mengetahui Jika Ip Multicast Diaktifkan?

  2. Cara Mengganti Perangkat Btrfs yang Gagal

  3. Cara mendapatkan waktu UTC

  1. Bagaimana saya bisa tahu jika netcat &dd berfungsi?

  2. Bagaimana cara berbagi koneksi internet?

  3. Bagaimana mengetahui apakah sebuah disk adalah SSD atau HDD

  1. Bagaimana Mengetahui Jika Dd Masih Bekerja?

  2. Bagaimana Bash Tahu Bagaimana Itu Dipanggil?

  3. Linux – Bagaimana Mengetahui Apa yang Harus Diambil Di Dmesg?