ste*_*fan 1 c++ algorithm stdvector
我有一个非常大的std :: vector std :: vectors,它包含固定数量的无符号整数.
所有uint向量都按升序排序.
我目前消除重复向量的方法是
unsigned int i = 0;
while ( i < new_combs.size() )
{
unsigned int j = i + 1;
while ( j < new_combs.size() )
{
unsigned int k = 0;
while ( k < new_combs.at(i).size() && new_combs.at(i).at(k) == new_combs.at(j).at(k) )
++k;
if ( k == new_combs.at(j).size() )
new_combs.erase(new_combs.begin() + j);
else
++j;
}
++i;
}
Run Code Online (Sandbox Code Playgroud)
这里,new_combs是包含如上所述的向量的向量.
如果向量矢量未排序,是否有更有效的方法来消除重复?
一种较短的方式是使用<algorithm>:
std::sort(new_combs.begin(), new_combs.end());
new_combs.erase(std::unique(new_combs.begin(), new_combs.end()), new_combs.end());
Run Code Online (Sandbox Code Playgroud)
除非您特别需要std::vector,否则您可以使用std::set以避免重复.
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |