c++ - Sorting vector based on another sorted vector -
i have got vector1 of pair, sorted int key:
std::vector <pair <int,string> > vector1; //6 5 1 8 4 2 then have vector2 consisting of numbers contained in vector1:
std::vector <string> vector2; //1 5 6 8 how sort vector2 same keys in vector1? want get:
unsorted: 1 5 6 8 sorted: 6 5 1 8 unsorted: 6 5 1 2 4 sorted: 6 5 1 2 4
if vector2 consists of numbers appear in vector1, can map numbers vector1, example vector1 [3, 2, 4] , vector2 [4, 3];
- map elements indexes exampe
3->0, 2->1, 4->2(keys numbers , values indexes). use map or hashmap it. - now loop through vector2, each element search in map , replace value map:
4 becomes 2, 3 becomes 0vector2 becomes[2, 0] - now use
sort(vector2.begin(), vector2.end());vector2 becomes[0, 2] - now loop through vector2 , each element replace vector1[i]:
0->3(because number @ 0th index in vector1 3),2->4(because number @ 2nd index in vector1 4). hope helps.
Comments
Post a Comment