मैंने अभी सी ++ मानक में पढ़ा है कि std::for_each
एक गैर-संशोधित अनुक्रम ऑपरेशन है, find
, search
और इसी तरह के साथ। क्या इसका मतलब यह है कि प्रत्येक तत्व पर लागू फ़ंक्शन को संशोधित नहीं करना चाहिए? ऐसा क्यों है? क्या गलत होने की सम्भावना है?std :: for_each एक गैर-संशोधित अनुक्रम ऑपरेशन क्यों है?
यहां एक नमूना कोड है, जहां अनुक्रम संशोधित किया गया है। क्या आप इसके साथ कुछ गलत देख सकते हैं?
void foo(int & i)
{
i = 12;
}
int main()
{
std::vector<int> v;
v.push_back(0);
std::for_each(v.begin(), v.end(), foo);
// v now contains 12
}
मुझे संदेह है कि यह सिर्फ एक व्याख्या मुद्दा है, लेकिन मैं इसके बारे में आपकी राय रखना चाहता था।
पुनश्च: मुझे लगता है मैं for_each
के बजाय std::transform
इस्तेमाल कर सकते हैं पता है, लेकिन उस समय नहीं है।
हां, मुझे बस एक ही समस्या सूची मिली है। जैसा कि मैंने सोचा था, यह सिर्फ व्याख्या का विषय था (लेकिन मुझे सच में लगता है कि उन्हें इस स्पष्टीकरण नोट को जोड़ना चाहिए)। –
हाँ मुझे भी लगता है। यह अभी तक n2800 में नहीं है। चलो देखते हैं कि अगले मसौदे में क्या है। के रूप में टिप्पणी CD1 का दर्जा प्राप्त है, यह काफी अजीब इसे अब और में नहीं है :) मैं वे इसे हटा दिया है क्योंकि वे इसके लिए एक अवधारणा बाहर काम करना चाहता हूँ पर शक। –
अच्छा लगता है! विशेष टिप्पणी में यह दोष रिपोर्ट में: "Stepanov और ली द्वारा मूल एसटीएल दस्तावेज़ खुले समारोह वस्तु अपने तर्क को संशोधित करने से मना कर"। मुझे लगता है कि के बारे में पता नहीं था। –