我有一个函数可以删除未排序的向量中的重复项,保持未排序:
int unsortedRemoveDuplicates(std::vector<int>& numbers)
{
std::set<int> seenNums; //log(n) existence check
auto itr = begin(numbers);
while(itr != end(numbers))
{
if(seenNums.find(*itr) != end(seenNums)) //seen? erase it
itr = numbers.erase(itr); //itr now points to next element
else
{
seenNums.insert(*itr);
itr++;
}
}
return seenNums.size();
}
但是我希望将它用于初始化为
的二维向量vector<vector<int>> numbers;
并且该函数仅从传递给函数的行号确定的一行中删除重复项。
我已经尝试将迭代器itr更改为
auto itr = begin(numbers[row]);
while(itr != end(numbers[row]))....
其中row被传递到函数中,但是这只会产生一个seg错误,所以我在这里停留,让它迭代一行。有什么建议吗?
答案 0 :(得分:1)
for (auto& each_row : numbers)
unsortedRemoveDuplicates(each_row);