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];

  1. map elements indexes exampe 3->0, 2->1, 4->2 (keys numbers , values indexes). use map or hashmap it.
  2. now loop through vector2, each element search in map , replace value map: 4 becomes 2, 3 becomes 0 vector2 becomes [2, 0]
  3. now use sort(vector2.begin(), vector2.end()); vector2 becomes [0, 2]
  4. 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

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -