我有一個簡單的結構C++排序陣列=>矢量迭代器不相容
struct test
{
std::vector<Data> data;
void sort()
{
std::sort(data.begin(), data.end());
}
}
數據是一個結構,以及和僅具有簡單的字段和實現<操作者像以下:
編輯:改變根據反饋包括
struct Data
{
// ADAPTION 1 - comparator works with reference now
bool operator<(const Data &data) const
// bool operator<(const Data data)
{
// 1) sortieren nach Typ
if (type < data.type)
return true;
else if (type > data.type)
return false;
// 2) nach name sortieren
if(strlen(strName) > 0)
{
if (strncmp(strName, data.strName, 50) < 0)
return true;
else if (strncmp(strName, data.strName, 50) > 0)
return false;
}
// ADAPTION 2 - added:
else if (data.strName[0]) // at least 1 character...
return true;
// 3) nach Spezialtyp sortieren
if(strlen(typeSpecial)>0)
{
if (strncmp(typeSpecial, data.typeSpecial, 50) < 0)
return true;
else if (strncmp(typeSpecial, data.typeSpecial, 50) > 0)
return false;
}
// ADAPTION 3 - added:
else if (data.strName[0]) // at least 1 character...
return true;
return false;
}
}
就是這樣。我怎樣才能得到這樣的vector iterators incompatible
錯誤?我沒有複製任何矢量,我直接調用與矢量的排序功能...
在Visual Studio 2005中,我從來沒有遇到過問題,在Visual Studio 2012中出現了這個問題,知道爲什麼,以及如何避免它
我想你'運營商<'是一個類的一部分?但是什麼是'STAT_DATA'? –
是的,它是數據結構的一部分...並且我編輯了我的帖子...我用一個簡單的名稱替換了STAT_DATA數據... – prom85
您能引用確切的錯誤消息並指出相關行嗎? – Chnossos