我只是找到了一种方法来计算 vector 中唯一项的数量。这是我最天真的方法。
std::vector<Items> v;
// some other work
std::vector<Items> unique_Count;
unique_Count.clear();
std::unique_copy(v.begin, v.end(), std::back_inserter(unique_Count);
int uniqueCount = unique_Count.size();
这是标准库中唯一的方法还是更好的方法?
最佳答案
这可能取决于您所说的“更好”是什么意思,但肯定有更简单的方法,也有可能更快的其他方法。
真正简单的方法是将项目插入到 std::set
或 std::unordered_set
中。插入所有项后,集合的大小将是唯一项的数量。
可能更快的方法是使用 std::sort
和 std::unique
“就地”查找唯一项而不是复制它们。这相当 std::unique_copy
通常会在内部执行的操作,但就地执行可以节省大量分配和复制。
std::vector<Items> v;
// populate v with data
std::sort(v.begin(), v.end());
int uniqueCount = std::unique(v.begin(), v.end()) - v.begin();
关于c++ - 计算独特项目的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100712/