2012-05-30 21 views

cevap

14

C++ 11'de map::at var (kim bilir?).

anahtarı yok eğer bir özel durum, find döner aMap.end() eleman mevcut değildir ve eğer herhangi bir değer olup olmadığını operator[] karşılık gelen anahtar için yeni bir değer değer başlatır. Şu anda bir haritanın bir parçası değildir indeksleme operatörü [] kullanarak bir anahtar erişiyorsanız

+2

[Tabii ki] (http://en.cppreference.com/w/cpp/container/map/at) ... –

+1

@KerrekSB (C++ 11'den beri) bunu bilmiyordu. –

28

o zaman otomatik için bir anahtar ekler. Bu büyük bir uyarı ve bunu dikkate al. Bu nedenle, ayar için dizin oluşturma işleci [] ve arama için .find()/.at() kullanmayı tercih ediyorum.

[] fazla .at() kullanmanın bir başka avantajı [] olmaz ise bu bir const std::map çalışabilir olduğu bir gerçektir.