c++ - how to sort vector with multi data? -


i have such vector:

struct statfaces {     std::string facename_1;     std::string facename_2;     float percentageperson ; };  std::vector<statfaces> listfaces_; 

and want sort vector. want sort group. example..

i have facename_1 = john , facename_2 = kate , percentageperson = %90        facename_1 = john , facename_2 = nastia , percentageperson = %95        facename_1 = bill , facename_2 = jamie , percentageperson = %91         facename_1 = bill , facename_2 = anna , percentageperson = %72  output should ;   facename_1 = bill , facename_2 = jamie, percentageperson = %91 facename_1 = bill , facename_2 = anna , percentageperson = %72 facename_1 = john , facename_2 = nastia , percentageperson = %95 facename_1 = john , facename_2 = kate , percentageperson = %90 

sort algorithm must group firstname_1 , sort according percentageperson

ps: not @ c++

you can pass custom comparison function std::sort. trivially implementable using std::tie:

#include <tuple> // std::tie  bool cmp(const statfaces& lhs, const statfaces& rhs) {   return std::tie(lhs.face_name1, lhs.percentageperson, lhs.facename_2) <          std::tie(rhs.face_name1, rhs.percentageperson, rhs.facename_2); } 

then

#include <algorithm> // std::sort  std::sort(listfaces_.begin(), listfaces_.end(), cmp); 

std::tie returns tuple of lvalue reference arguments, , there lexicographical less-than comparison bool operator< compares 2 of these tuples. effect perform less-than lexicographical comparison between 2 statfaces instances. used internally std::sort sort elements.

note: std::tie available in c++11 implementations. if don't have c++11 standard library implementation, can use std::tr1::tie header <tr1/tuple> or boost::tie. can implement comparison function cmp hand. exercise, both tedious , error prone.


Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -