删除<数字>在O(n)时间内来自容器的元素的数量
Remove <number> of elements from a container in O(n) time
假设您想要实现一个模板化函数,该函数将两个迭代器带到一个容器,并将一个整数描述为"如果容器中的元素在容器中的次数少于<integer>,则将其从容器中弹出"。这样的声明可以是:
template <class theIter>
theIter pop_um(theIter start, theIter end, int fewerThan);
有可能在O(n)时间内写出这样的函数吗?执行这样的任务通常使用哪些过程?
Bucket/radix对数据进行排序(从开始到结束迭代器),以便在线性时间内开始。然后在线性时间内扫描你的新排序列表,跟踪元素何时变化,并使其易于弹出。线性时间。O(2n)=O(n)。存储桶需要大量RAM,但这取决于您的排序方式。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 擦除while循环中迭代的元素