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

  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • VvCompHelpvV

    VvCompHelpvV

    4 EYLÜL 2007
  • World Science Festival

    World Scienc

    1 Mayıs 2008