Har nu löst problemet iaf. Jag har några hjälpfunktioner för medlemsvariabler istället så jag gör helt enkelt så här: Inte för att klaga, men kan du inte göra data privata? >Inte för att klaga, men kan du inte göra data privata?Sortering! (av en vector utav en class variabel)
class info1{
public:
string namn;
string nummer;
string ovrigt;
};
vector <info1> data;
/////////// LÖSNING
bool operator<(const info1& x,const info1& y)
{
return x.namn<y.namn;//Byt ut mot den som önskas
}
bool operator==(const info1& x,const info1& y)
{
return x.namn<y.namn;
}
///////////
int main()
{
//använd push_back för att fylla med massa värden
//sedan kan du använda sort
sort(data.begin(),data.end());
}
Sv: Sortering! (av en vector utav en class variabel)
<code=c++>
std::sort(v.begin(), v.end(), less_members(&info1::namn));
std::find_if(v.begin(), v.end(), equal_member(&info1::nummer, "12345));
</code>
koden ser ut så här för t.ex. less_members
<code=c++>
template <class StructT, typename T1>
struct less_members_t : public std::binary_function<StructT, StructT, bool> {
less_members_t(T1 StructT::* member) : member_(member) { }
bool operator()(const StructT& lhs, const structT& rhs) { return lhs.*member_ < rhs.*member_; }
}
template <class StructT, typename T1>
less_members_t<StructT, T1> less_members(T1 StructT::* member) {
return less_members_t<StructT, T1>(member);
}
</code>
Jag kan lägga upp koden för de övriga funktionerna om någon är intresserad.Sv:Sortering! (av en vector utav en class variabel)
Sv: Sortering! (av en vector utav en class variabel)
Varför skall man göra det? Skulle något bli enklare eller bättre?
Strukturen är ju bara en bärare av data utan något internt läge eller beroenden mellan medlemmarna.