SORU
28 HAZİRAN 2010, PAZARTESİ


Eğer harita bir anahtar için bir değer içerip içermediğini belirlemek?

Eğer STL bir harita belirli bir anahtar için bir değer içerip içermediğini belirlemek için en iyi yolu nedir?

#include <map>

using namespace std;

struct Bar
{
    int i;
};

int main()
{
    map<int, Bar> m;
    Bar b = {0};
    Bar b1 = {1};

    m[0] = b;
    m[1] = b1;

    //Bar b2 = m[2];
    map<int, Bar>::iterator iter = m.find(2);
    Bar b3 = iter->second;

}

Bir hata ayıklayıcı bu incelenmesi, iter sadece çöp veri gibi görünüyor.

Eğer bu cümleyi ben Yorumsuz:

Bar b2 = m[2]

Hata ayıklayıcı b2 {i = 0} olduğunu gösterir. (Tanımsız bir dizin kullanarak tüm boş/başlatılmamış değerlere sahip bir yapı dönecek anlamına geliyor sanırım?)

Bu yöntemlerin ikisi de çok güzel. Aslında tek istediğim bu gibi bir arabirim

bool getValue(int key, Bar& out)
{
    if (map contains value for key)
    {
        out = map[key];
        return true;
    }
    return false;
}

Bu satırlar boyunca bir şey var mı?

CEVAP
1 AĞUSTOS 2012, ÇARŞAMBA


Haritanın bir birden çok eşleme olmadığı sürece, en şık yollarından biri sayma yöntemini kullanmak olacaktır

if (m.count(key))
    // key exists

Kont eğer bu eleman gerçekten haritasında ise 1 olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • TimMinchinLive

    TimMinchinLi

    23 ŞUBAT 2009