Я пытаюсь добавить объекты с помощью класса (Sample), сортировать свой вектор и после этого удалять дубликаты записей в моем векторе.удалить запись дубликатов в векторах
моих коды (это только часть моих кодов в моей программе)
vector<Sample> sampleVector;
sort(sampleVector.begin(), sampleVector.end());
sampleVector.erase(std::unique(sampleVector.begin(),sampleVector.end(),sampleVector.end()));
, но тем не менее он, когда я попытался запустить свою программу он показывает эту ошибку.
Type 'std::__1::__wrap_iter<Sample *>' does not provide a call operator
, и я понял, что, скорее всего, ошибка вызвана этой линии
sampleVector.erase(std::unique(sampleVector.begin(),sampleVector.end(),sampleVector.end()));
Что я должен сделать так, что я могу заставить его работать, чтобы удалить повторяющиеся записи в моем векторе? Заранее спасибо
Еще одна вещь, которую я пробовал, но она не работает.
bool myfunction (Sample *i,Sample *j) {
return (i==j);
}
std::vector<Sample>::iterator it;
vector<Sample> sampleVector;
it = std::unique(sampleVector.begin(), sampleVector.end(),myfunction);
for (it=sampleVector.begin(); it!=sampleVector.end(); ++it) {
std::cout << *it << " "; <-- error must change it to &*it
}
Читайте внимательно: http://en.cppreference.com/w/cpp/algorithm/unique – paddy
Альтернативная ссылка, например: [link] (http://www.cplusplus.com/reference/algorithm/unique/) – QuestionMarcs
@paddy, поэтому он работает только с примитивными типами данных? как вектор –
user2935569