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

  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • laptopmag

    laptopmag

    25 Ocak 2008
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012