5 c++ c++-standard-library c++11 c++17
我只想找到一种方法来计算向量中的唯一项目数.这是我最天真的做法.
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();
Run Code Online (Sandbox Code Playgroud)
这是标准库中唯一有或更好的方法吗?
它可能取决于您所说的“更好”是什么意思,但是肯定有一些更简单的方法,以及其他可能更快的方法。
真正简单的方法是将项目插入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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10645 次 |
| 最近记录: |