में संदर्भ द्वारा भविष्यवाणी करता है मैं std::list
से तत्वों को निकालने का प्रयास कर रहा हूं और हटाए गए तत्वों के कुछ आंकड़े रखता हूं।पास std algos सी ++
ऐसा करने के लिए, मैं सूची से remove_if फ़ंक्शन का उपयोग करता हूं, और मेरे पास एक अनुमान है। मैं आंकड़ों को इकट्ठा करने के लिए इस भविष्यवाणी का उपयोग करना चाहता हूं।
class TestPredicate
{
private:
int limit_;
public:
int sum;
int count;
TestPredicate(int limit) : limit_(limit), sum(0), count(0) {}
bool operator() (int value)
{
if (value >= limit_)
{
sum += value;
++count; // Part where I gather the stats
return true;
}
else
return false;
}
};
यहाँ और algo के लिए कोड है:: यहाँ विधेय के लिए कोड है
std::list <int> container;
container.push_back(11);
TestPredicate pred(10);
container.remove_if(pred)
assert(pred.count == 1);
दुर्भाग्य से, जोर झूठी क्योंकि विधेय मूल्य द्वारा पारित किया गया है। संदर्भ के द्वारा पारित करने के लिए मजबूर करने का कोई तरीका है?
मुझे नहीं पता कि यह सीधे किया जा सकता है, लेकिन आप वांछित प्रभाव प्राप्त करने के लिए वास्तविक भविष्यवाणी के लिए एक संदर्भ या सूचक युक्त एक रैपर का उपयोग कर सकते हैं। –
यह एक अच्छा विचार है। तो मैं किसी भी अनुमानित संदर्भ को लपेटने के लिए एक टेम्पलेट बना सकता हूं ... जो मुझे आश्चर्यचकित करता है कि ऐसा टेम्पलेट stl या boost में मौजूद है ... – Arthur
@jules: अपने पोस्ट के लिए अपने टेम्पलेट समाधान में संशोधन करने के लिए स्वतंत्र महसूस करें! (मैं थोड़ी परेशान हूं हालांकि 'std :: tr1 :: ref' सी ++ 03 में नौकरी नहीं करता है।) ** अपडेट: ** इसे मिला! संपादन ... –