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

  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • FRED

    FRED

    1 EKİM 2005
  • SegaAmerica

    SegaAmerica

    5 Mart 2008