Moin zusammen,
ich habe folgendes Szenario:
Ich habe einen container, genauer gesagt
Wobei point_s und hash_func folgendermaßen definiert sind:
Nun habe ich in einer anderen Funktion, in der ich das set als konstante Referenz übergebe folgendes:
Diese Anweisung führt aber zu einem Problem, denn, so die Debug-Nachricht, die list-iterators seien nicht kompatibel.
Im Debugger sehe ich des weiteren, dass "_Vec" folgendermaßen aussieht:
Ich mache nur insert bzw. erase-Aufrufe.
Hat jemand eine Idee, wo das Problem liegen könnte?
Vielen Dank & Gruß,
badday
ich habe folgendes Szenario:
Ich habe einen container, genauer gesagt
C++:
std::tr1::unordered_set<point_s, hash_func> con;
Wobei point_s und hash_func folgendermaßen definiert sind:
C++:
class point_s
{
public:
point_s(int _x, int _y): x(_x), y(_y) {}
unsigned short x, y;
inline bool operator<(const point_s &b) const
{
return (x<b.x || (x==b.x && y<b.y));
}
inline bool operator==(const point_s &b) const
{
return (x==b.x && y==b.y);
}
};
struct hash_func
{
std::tr1::hash<int> int_hash;
std::size_t operator() (const point_s &s) const
{
return int_hash(s.x)+int_hash(s.y);
}
};
Nun habe ich in einer anderen Funktion, in der ich das set als konstante Referenz übergebe folgendes:
C++:
if(con.find(point_s(x, y))!=con.end())
Diese Anweisung führt aber zu einem Problem, denn, so die Debug-Nachricht, die list-iterators seien nicht kompatibel.
Im Debugger sehe ich des weiteren, dass "_Vec" folgendermaßen aussieht:
_Vec [9]({x=40 y=30 },{x=40 y=30 },{x=****? y=****? },{x=****? y=****? },{x=30 y=20 },{x=30 y=20 },{x=30 y=20 },{x=52685 y=52685 },{x=52685 y=52685 }) std::vector<std::list<point_s,std::allocator<point_s> >::_Iterator<1>,std::allocator<std::list<point_s,std::allocator<point_s> >::_Iterator<1> > >
Ich mache nur insert bzw. erase-Aufrufe.
Hat jemand eine Idee, wo das Problem liegen könnte?
Vielen Dank & Gruß,
badday