2011-10-25 14 views
32

का एक वेक्टर को जोड़ना मैं ऐसे जैसे pair के vector है:जोड़ी

revenue[i].first = "string"; 
revenue[i].second = map[i].second; 

लेकिन राजस्व के बाद से:

vector<pair<string,double>> revenue; 

मैं एक स्ट्रिंग है और इस तरह एक नक्शे से एक डबल जोड़ना चाहते हैं प्रारंभ नहीं किया गया है, यह सीमाओं में से एक त्रुटि के साथ आता है। तो मैं इस तरह vector::push_back उपयोग करने की कोशिश:

revenue.push_back("string",map[i].second); 

लेकिन वह कहते हैं दो तर्क नहीं ले सकते। तो मैं pair के vector में कैसे जोड़ सकता हूं?

+0

तो आपके पास वेक्टर जोड़ी नहीं है लेकिन एक जोड़ी वेक्टर, या जोड़े के वेक्टर नहीं हैं। एक बार जब आप इसे समझ लेंगे, तो आपने अपनी समस्या हल कर ली है। –

उत्तर

76

उपयोग std::make_pair:

revenue.push_back(std::make_pair("string",map[i].second)); 
+1

emplace_back के बारे में क्या? –

+1

@ श्रीवायरमे, आप इसे सी ++ 11 में उपयोग कर सकते हैं। उदाहरण के लिए नीचे एक उत्तर देखें। मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। – avakar

+1

मैं एक और अधिक सुरुचिपूर्ण और संभवतः तेज़ समाधान की ओर इशारा कर रहा था ... मुझे नीचे दिए गए रेटेड उत्तर को नहीं देखा गया ... आप अपना उत्तर अपडेट करना चाहेंगे ... –

5

निम्नलिखित दस्तावेज़ पढ़ें:

http://cplusplus.com/reference/std/utility/make_pair/

या

http://en.cppreference.com/w/cpp/utility/pair/make_pair

मुझे लगता है कि मदद मिलेगी। वे साइट सी ++ के लिए अच्छे संसाधन हैं, हालांकि बाद में यह पसंदीदा संदर्भ प्रतीत होता है।

9
revenue.pushback("string",map[i].second); 

लेकिन वह कहते हैं दो तर्क नहीं ले सकते। तो मैं इस वेक्टर जोड़ी में कैसे जोड़ सकता हूं?

आप सही रास्ते पर हैं, लेकिन इसके बारे में सोचें; आपका वेक्टर क्या पकड़ता है? यह निश्चित रूप से एक स्ट्रिंग और एक int में एक स्थिति नहीं रखता है, इसमें Pair है। तो ...

revenue.push_back(std::make_pair("string", map[i].second));  
20

IMHO, एक बहुत अच्छा समाधान C++ 11 emplace_back समारोह का उपयोग करने के लिए है:

revenue.emplace_back("string", map[i].second); 

यह सिर्फ जगह में एक नए तत्व पैदा करता है।

4

या आप प्रारंभ सूची का उपयोग कर सकते हैं:

revenue.push_back({"string", map[i].second}); 
-2

एक और अस्थायी जोड़ी उपयोग करके देखें:

pair<string,double> temp; 
vector<pair<string,double>> revenue; 

// Inside the loop 
temp.first = "string"; 
temp.second = map[i].second; 
revenue[i].push_back(temp); 
+0

राजस्व [i] गलत है! – bicepjai

1
revenue.push_back(pair<string,double> ("String",map[i].second)); 

इस काम करेंगे।

संबंधित मुद्दे