Re: STL sort
※ 引述《sorryChen (陳揚和)》之銘言:
: 如果我有兩個分開的array 紀錄 ex: 人名和對應的score
: ex:
: int name[3] = {"a", "b", "c"};
: int score[3] = {3, 2, 1}
: 現在想用stl sort成 依照score來排序
: 這樣要怎麼用? 要寫個自己的swap 然後怎麼丟到sort中呢?
: → shik:可以再開一個陣列存編號 124.8.3.192 08/01 22:15
這個解法應該算很接近你的需求了
例如:
char name[4][10] = {"Jessica","George","Battler","Maria"};//最近剛跑完海貓..XD
int score[4] = {70,100,60,80};
bool compare(const int a, const int b)
{
return score[a]<score[b];
}
//in some function
int ptr[4];
for(int i=0; i<4; i++) ptr[i]=i;
sort(ptr,ptr+4,compare);
for(int i=0; i<4; i++)
{
cout << name[ptr[i]] << '\t' << score[ptr[i]] << endl;
}
如果資料不在 global 時也可以寫 functor:
struct compare
{
int *score;
compare(int *s):score(s) {}
bool operator () (const int a, const int b) const
{
return score[a]<score[b];
}
};
//in some function
char name[4][10] = {"Jessica","George","Battler","Maria"};
int score[4] = {70,100,60,80};
int ptr[4];
for(int i=0; i<4; i++) ptr[i]=i;
sort(ptr,ptr+4,compare(score));
for(int i=0; i<4; i++)
{
cout << name[ptr[i]] << '\t' << score[ptr[i]] << endl;
}
不過個人還是會習慣把要一起排的資料包成 struct
一來結構上就是在一起 二來直接丟給sort就會真的排好
--
"LPH" is for "Let Program Heal us"....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.250.80
推
08/04 06:25, , 1F
08/04 06:25, 1F
→
08/04 06:26, , 2F
08/04 06:26, 2F
推
08/04 21:37, , 3F
08/04 21:37, 3F
→
08/07 04:36, , 4F
08/07 04:36, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):