gpt4 book ai didi

c++ - 二维 vector 上的迭代器

转载 作者:行者123 更新时间:2023-11-30 05:08:17 25 4
gpt4 key购买 nike

我有一个函数可以删除未排序 vector 中的重复项,使其保持未排序状态:

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<vector<int>> numbers;

并让函数仅从由传入函数的行号确定的一行中删除重复项。

我尝试将迭代器 itr 更改为

auto itr = begin(numbers[row]);
while(itr != end(numbers[row]))....

行被传递到函数中,但这只会产生段错误,所以我被困在这里让它迭代一行。有什么建议吗?

最佳答案

不要想太多。只需迭代外部 vector 并将每个内部 vector 传递给函数。

for (auto& each_row : numbers)
unsortedRemoveDuplicates(each_row);

关于c++ - 二维 vector 上的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46923093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com