मेरे पास एक सी ++ प्रोग्राम है जिसमें मैं std::map
में अनुपलब्ध किसी भी कुंजी के लिए डिफ़ॉल्ट मान डालना चाहता हूं। मैं सोच रहा हूं कि ऐसा करने का सबसे आसान तरीका std::map::operator[]()
का उपयोग POSIX टच कमांड की तरह करना होगा - यानी, यदि यह पहले से मौजूद है तो मान अपरिवर्तित छोड़ने के लिए, लेकिन अगर ऐसा नहीं होता है तो इसे बनाने के लिए। example के लिए,क्या मैं std :: map :: ऑपरेटर [] पर भरोसा कर सकता हूं?
#include <map>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> keys = {0, 1};
map<int, int> m;
m[1] = 5;
m[2] = 12;
for (const int i : keys)
{
m[i]; // touch value
}
for (auto const & kv : m)
{
cout << kv.first << ", " << kv.second << endl;
}
}
मुझे यकीन है कि संकलक m[i];
बयान का अनुकूलन नहीं होगा, के बाद से मैं उनके साथ कुछ भी नहीं "कर" कर रहा हूँ हो सकता है? (स्पष्ट रूप से असाइन नहीं किया जा रहा है, पढ़ने से नहीं।)
क्या आप एक स्रोत उद्धृत कर सकते हैं? –
@ cp.engr संपादित देखें। –
धन्यवाद। क्या मैं आपके जवाब में इस बिट को उद्धृत करने का सुझाव दे सकता हूं? "एक वास्तविक कार्यान्वयन को अभिव्यक्ति के हिस्से का मूल्यांकन करने की आवश्यकता नहीं है यदि यह कटौती कर सकती है कि इसका मूल्य उपयोग नहीं किया जाता है और कार्यक्रम के अवलोकन योग्य व्यवहार को प्रभावित करने वाले कोई दुष्प्रभाव उत्पन्न नहीं होते हैं।" आपके द्वारा लिंक किए गए स्वीकृत उत्तर में दूसरे ब्लॉकक्वाट से। –