में अद्वितीय डेटा धकेल रहा है निम्न डेटा:वेक्टर
FolioA Name1 100
FolioA Name2 110
FolioA Name3 100
FolioB Name1 100
FolioB Name3 106
FolioC Name1 108
FolioC Name2 102
FolioC Name3 110
मैं केवल
std::vector<std::string> name;
में अद्वितीय नामों (यानी NAME1, NAME2 और NAME3, प्रत्येक एक बार) सम्मिलित करने के लिए के रूप में मैं पुनरावृति चाहते डेटा के माध्यम से।
तो, मुझे लगता है मैं एक नक्शा बुलाया परीक्षा में डेटा जहां संग्रहीत किया है निम्नलिखित कोड है:
std::map<std::string, std::map<std::string, double> >test;
std::map<std::string, std::map<std::string, double > >::iterator it1 = test.begin(), end1 = test.end();
while (it1 !=end1) {
std::map<std::string, double>::iterator it2 = it1->second.begin(), end2=it1->second.end();
**name.push_back(it2->first);**
++it2;
}
++it1;
}
लेकिन वर्तमान में नाम में जिस तरह से मैं कर रहा हूँ सूचना भेजे, NAME1, 2 की 3 उदाहरण है नाम 2 का, और नाम 3 का 3, जो मेरे कोड से अपेक्षित है। मैं इसे केवल अनूठे नामों के लिए कैसे ठीक करूं?
कैसे क्या आप किस उदाहरण को शामिल करना चाहते हैं? – juanchopanza
क्या आपके पास नामों का 'वेक्टर' होना चाहिए? मैं इसके बजाय नामों के 'सेट' का उपयोग करने का सुझाव दूंगा। यदि आपके पास वेक्टर होना है, तो आप पहले भी एक सेट में सम्मिलित कर सकते हैं, फिर ऑब्जेक्टर्स को 'इटरेटर' लेते हुए कन्स्ट्रक्टर ओवरलोड का उपयोग करके 'वेक्टर' में ले जाएं। – Chad
@juanchopanza, मैं प्रत्येक का पहला उदाहरण चुनूंगा, इसलिए यदि वेक्टर में पहले से ही (नाम 1, नाम 2, नाम 3) शामिल है, तो जब यह चौथा रिकॉर्ड हिट करता है, तो यह पहचानता है कि रिकॉर्ड पहले से मौजूद है, इसलिए यह इसे छोड़ देता है, और जाता है अगले रिकॉर्ड के लिए। – user1155299