उत्तर
आपको अपने सेट के सदस्य को पुनर्प्राप्त करने के लिए पुनरावर्तक को अव्यवस्थित करना होगा।
std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it)
{
u_long f = *it; // Note the "*" here
}
आप सी ++ 11 सुविधाओं है, तो आप एक range-based for loop उपयोग कर सकते हैं:
for(auto f : SERVER_IPS) {
// use f here
}
बस का उपयोग *
it
से पहले:
set<unsigned long>::iterator it;
for (it = myset.begin(); it != myset.end(); it++) {
cout << *it;
}
यह dereferences और आप के लिए अनुमति देता वर्तमान में इटेटरेटर तत्व को एक्सेस करें।
बस एक मामूली नोट: इसे सामान्य रूप से ++ के बजाय इसे ++ में लूप के लिए इटरेटर की एक अतिरिक्त प्रति से बचने के लिए पसंद किया जाता है। – user2891462
यह सवाल करने के लिए एक पूर्ण समाधान है:
तुम कैसे std :: सेट पुनरावृति करते हैं?
int main(int argc,char *argv[])
{
std::set<int> mset;
mset.insert(1);
mset.insert(2);
mset.insert(3);
for (auto it = mset.begin(); it != mset.end(); it++)
std::cout << *it;
}
या यहां तक कि 'के लिए (ऑटो i: mset) std :: cout << i; ' –
सी ++ 11 standart के लिए एक और उदाहरण:
set<int> data;
data.insert(4);
data.insert(5);
for (const int &number : data)
cout << number;
@ Mr.C64 ऐसा नहीं है कि यह इस मामले में के रूप में अभिन्न प्रकार के साथ ज्यादा मायने रखती है। –
यह ध्यान देने योग्य हो सकता है कि यदि आप कंटेनर को संशोधित करना चाहते हैं तो आपको पहले व्यक्ति का उपयोग करने की आवश्यकता है। Googlers के लिए है कि। –
मुझे बात है सी ++ 11 समाधान संदर्भ (ऑटो और एफ) के साथ होना चाहिए। यह ज्यादातर मामलों के लिए बेहतर है। इस विशिष्ट मामले के लिए भी। – jaskmar