std::map<int, std::vector<int>> tmp_map = { { 1, [10,5,4] }, { 2, [5,5,1] },
{ 3, [2,4,3] }, { 4, [9,7,8] } };
मैं इस मानचित्र को वेक्टर मान में तीसरे मान से ऑर्डर करना चाहता हूं। तो परिणाम इस प्रकार होगा:
{ { 2, [5,5,1] },{ 3, [2,4,3] },{ 1, [10,5,4] },{ 4, [9,7,8] } }
0
유 길재
23 अप्रैल 2020, 08:24
2 जवाब
सबसे बढ़िया उत्तर
मानक दृष्टिकोण। . .
- मानचित्र को वेक्टर में कॉपी करें
- कस्टम तुलनित्र के साथ सॉर्ट वेक्टर
#include <iostream>
#include <map>
#include <vector>
#include <utility>
#include <algorithm>
int main() {
std::map<int, std::vector<int>> tmp_map = { { 1,{10,5,4} }, { 2,{5,5,1} },
{ 3,{2,4,3} }, { 4,{9,7,8} } };
// For easier and shorter writing
using DataType = std::pair<int, std::vector<int>>;
// Create Vector with Elements from Map
std::vector<DataType> data(tmp_map.begin(), tmp_map.end());
// Sort data
std::sort(data.begin(), data.end(), [](const DataType& d1, const DataType& d2) { return d1.second[2] < d2.second[2]; });
// show result
for (const auto& [key, value] : data) {
std::cout << key << " --> ";
for (const int i : value) std::cout << i << " ";
std::cout << "\n";
}
return 0;
}
2
Armin Montigny
23 अप्रैल 2020, 08:41
आप map
पहले से ही इसके मुख्य मान के अनुसार क्रमबद्ध हैं, इसलिए आप इसे अपने स्थान पर पुन: व्यवस्थित नहीं कर सकते। इसके बजाय आपको क्या करना चाहिए इसे एक वेक्टर में कॉपी करें और फिर इसे इस तरह एक कस्टम ऑपरेटर का उपयोग करके सॉर्ट करें:
#include <map>
#include <vector>
#include <algorithm>
int main()
{
std::map<int, std::vector<int>> tmp_map = { { 1, {10,5,4} }, { 2, {5,5,1} },
{ 3, {2,4,3} }, { 4, {9,7,8} } };
//! Copy the map
using P = std::pair<int, std::vector<int>>;
std::vector<P> copy(tmp_map.begin(), tmp_map.end());
//! Sort it the way you want (here I'm sorting on based on the second element
//! of the array.
std::sort(copy.begin(), copy.end(), [](const P& a, const P& b)
{
return a.second[2] < b.second[2];
});
}
2
Thomas Caissard
23 अप्रैल 2020, 08:42
संबंधित सवाल
नए सवाल
c++
C ++ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा है। यह मूल रूप से C के विस्तार के रूप में डिज़ाइन किया गया था और इसमें एक समान सिंटैक्स है, लेकिन यह अब पूरी तरह से अलग भाषा है। C ++ कंपाइलर के साथ संकलित कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें। विशिष्ट मानक संशोधन [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] या [C ++ 23], आदि से संबंधित प्रश्नों के लिए संस्करण-विशिष्ट टैग का उपयोग करें। ।
std::sort
कस्टम तुलना फंक्शन की अनुमति देता है।