hallo ik pas onderstaande toe om te sorteren en dit werkt perfect (mijn struct bevat wel double ipv int)
Nu dacht dat dit ook zou werken met UNIQUE met een predicate.
Maar dit schijnt mij niet te lukken, krijg allezins vreemde resultaten.
Ik heb ook met tollerantie geprobeerd.
Iemand een idee hoe ik uit een vector van struct de dubbels (op basis double in de struct )kan verwijderen ?
thx !
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
class MyData
{
public:
int m_iData;
string m_strSomeOtherData;
};
bool MyDataSortPredicate(const MyData& lhs, const MyData& rhs)
{
return lhs.m_iData < rhs.m_iData;
}
int main()
{
// Create list
vector myvector;
// Add data to the vector
MyData data;
data.m_iData = 3;
myvector.push_back(data);
data.m_iData = 1;
myvector.push_back(data);
// Sort the vector using predicate and std::sort
std::sort(myvector.begin(), myvector.end(), MyDataSortPredicate);
// Dump the vector to check the result
for (vector::const_iterator citer = myvector.begin();
citer != myvector.end(); ++citer)
{
cout << (*citer).m_iData << endl;
}
return 1;
}
Nu dacht dat dit ook zou werken met UNIQUE met een predicate.
Maar dit schijnt mij niet te lukken, krijg allezins vreemde resultaten.
Ik heb ook met tollerantie geprobeerd.
Iemand een idee hoe ik uit een vector van struct de dubbels (op basis double in de struct )kan verwijderen ?
thx !
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
class MyData
{
public:
int m_iData;
string m_strSomeOtherData;
};
bool MyDataSortPredicate(const MyData& lhs, const MyData& rhs)
{
return lhs.m_iData < rhs.m_iData;
}
int main()
{
// Create list
vector myvector;
// Add data to the vector
MyData data;
data.m_iData = 3;
myvector.push_back(data);
data.m_iData = 1;
myvector.push_back(data);
// Sort the vector using predicate and std::sort
std::sort(myvector.begin(), myvector.end(), MyDataSortPredicate);
// Dump the vector to check the result
for (vector::const_iterator citer = myvector.begin();
citer != myvector.end(); ++citer)
{
cout << (*citer).m_iData << endl;
}
return 1;
}