2011-10-02 5 views
7

उदाहरण के लिए, घटना एक किताब में शब्द, मैं किसी को देखा गिनती बस ने लिखा है:मानचित्र में <string, int>, क्या यह गारंटी है कि int को शून्य में प्रारंभ किया गया है?

map<string, int> count; 
string s; 
while (cin >> s) count[s]++; 

इस ऐसा करने का सही तरीका है? मैंने अपनी मशीन पर परीक्षण किया और ऐसा लगता है। लेकिन क्या शून्य की शुरुआत की गारंटी है? यदि ऐसा नहीं है, मैं इस तरह के कोड कल्पना कर सकते हैं:

map<string, int> count; 
string s; 
while (cin >> s) 
    if (count.find(s) != count.end()) count[s]++; 
    else count[s] = 1; 

उत्तर

12

हाँ, operator[] एक std::map पर T(), जो int के मामले में, शून्य है साथ मूल्य प्रारंभ हो जाएगा।

यह सी ++ मानक की धारा 23.4.4.3 पर प्रलेखित है:

T& operator[](const key_type& x); 

प्रभाव: यदि नक्शे में x करने के लिए कोई कुंजी बराबर है, value_type(x, T()) सम्मिलित करता है नक्शे में।

+0

धन्यवाद! क्या आपके पास अपने बिंदु के लिए कोई संदर्भ है? –

संबंधित मुद्दे