>我有一个函数,可以删除未排序向量中的重复项,使其保持未排序:
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]))....
其中行被传递到函数中,但这只会创建一个 seg 错误,所以我被困在这里让它迭代一行。有什么建议吗?
不要想太多。只需迭代外部向量并将每个内部向量传递给函数。
for (auto& each_row : numbers)
unsortedRemoveDuplicates(each_row);