jak sortować elementy w liście vector

0

Witam!

mam problem z listą vector, jest to ostatnia rzecz, którą muszę zrobić do projektu.

class Result
{
	int point;
	std::string name;
public:
	Result(int P, std::string S): point (P), name(S)
	{};
};

int main()
{

std::vector<Result> result;
std::fstream we;
int point=0;
std::string stryng;
we.open("Result.txt", std::ios::in);
while (we>>point>>stryng)
{
	result.push_back(Result(point,stryng));
}

}

Mam taki kod. muszę ten cały złom posortować biorąc pod uwagę point z klasy result i to względej tej zmiennej będzie całe sortowanie. Jak to dalej ruszyć?

3

W skrócie: definiujesz operator < dla Result i potem std::sort z <algorithm>

0
 
class Result
{
    int point;
    std::string name;
public:
    Result(int P, std::string S): point (P), name(S)
    {};
Result &operator<(Result &r)
{
return point<r.point;
}
};

coś takiego?

3
bool operator<(const Result &r) const { return point<r.point; }
0

dzięki :P

a teraz, żeby posortowało tą moją listę? (Przepraszam, że pytam o takie proste rzeczy. Zależy mi na czasie, a po całym dniu kodzenia padam na łeb, już mi umysł wiedzy nie przyswaja)

3
std::sort(result.begin(), result.end());
0

Działa sortowanie, zarąbiście, dzięki!

Jeszcze jedna sprawa, żeby teraz posortowaną listę zapisać do pliku, tak żeby w tej samej kolejności dodać (tj. /point /name), to co dokładnie muszę zrobić? Muszę dodać kolejny przeciążony operator, tylko, że tym razem będzie to

ostream &operator<<(istream &s1, ostream &s2)
{

}
 
1
class Result
  {
   int point;
   std::string name;
   public:
   Result(int point,std::string name):point(point),name(name) {}
   bool operator<(const Result &r)const { return point<r.point; }
   friend ostream &operator<<(ostream &s,const Result &r) { return s<<r.point<<' '<<r.name; }
  };

vector<Result> tb;
std::ofstream fout(FileName);
std::ostream_iterator<Result> iout(fout,"\n");
std::copy(tb.begin(),tb.end(),iout);
0

Dzięki wielkie Panowie. Bardzo mi pomogliście.

Nie wiem, co ja bym bez was zrobił.

Życzę dobrej nocy i powodzenia! :)

2

A jak będzie chciał jutro sortować po długości Result::name?

1 użytkowników online, w tym zalogowanych: 0, gości: 1