二维向量的迭代器
Iterators over two-dimensional vectors
>我有一个函数,可以删除未排序向量中的重复项,使其保持未排序:
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);
相关文章:
- std::向量迭代器和调整大小/保留的奇怪/有趣行为
- 如何取消引用向量迭代器
- Map中的(字符串的)向量迭代器
- C++将向量迭代器转换为索引
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- C++向量迭代器nth_element编译错误
- 无法查找值初始化的向量迭代器?
- STD ::向量迭代器类型和允许的操作
- 向量迭代器 < 或 !=
- 向量迭代器在新对象的 push_back() 之后不兼容
- 向量迭代器对于包装器类不可取消引用(没有超出 end() 取消引用)
- C++向量迭代器不是增量的
- 使用向量迭代器的合并矢量
- 向量迭代器不可递增
- 向量迭代器进行循环
- 向量迭代器与c++不兼容
- 向量迭代器不可解引用C++
- C++将向量迭代器与实例进行比较
- 编译错误 ::向量 ::迭代器