我必须创建一个通用函数来删除 vectorInt 中的所有重复项,这是我创建的具有 getYear 和 getName 函数的类。我不确定如何制作该函数,因为比较了vectorInt,因为Book 与getName 和getYear 进行了比较。Int 在一个级别上进行比较,而 Book 在两个级别上进行比较。
template<class T> vector<T> removeDuplicates(vector<T> n){
for(unsigned int i = 0; i < n.size();i++){
T current = n.at(i);
for(unsigned int j = i + 1; j < n.size(); j++){
T compare = n.at(j);
if(current == compare)
n.erase(n.begin() + j);
}
}
return n;
}
谢谢您的帮助
编辑:
试过用这个
template <class T> std::vector<T> removeDuplicates(std::vector<T> vec)
{
std::sort( vec.begin(), vec.end() );
vec.erase( std::unique( vec.begin(), vec.end() ), vec.end() );
return vec;
}
但是对于书籍,我不断收到错误
class Book {
public:
Book();
Book(std::string, int);
int getYear() const {
return year;
}
std::string getName() const {
return name;
}
bool operator==(Book const &);
private:
std::string name;
int year;
};