stl-algorithm相关内容

set_union 与多集容器?

当一个或两个输入容器是具有重复对象的多重集时,算法 std:set_union 的返回是什么?复制人会迷路吗? 假设例如: multisetms1;ms1.插入(1);ms1.插入(1);ms1.插入(1);ms1.插入(2);ms1.插入(3);多集ms2;ms2.插入(1);ms2.插入(1);ms2.插入(2);ms2.插入(2);ms2.插入(4);向量诉(10 ..
发布时间:2022-01-24 20:51:36 C/C++开发

如何在少于 O(n) 的时间内在 std::set 中选择一个随机元素?

这个问题添加了约束. 我愿意允许不统一的选择,只要不偏向一边. 鉴于“集合通常实现为二叉搜索树",而我期望它们将包含某种用于平衡的深度或大小信息,我希望您可以对树进行某种加权随机游走.但是我不知道有任何远程便携的方式来做到这一点. 编辑:约束不适用于摊销时间. 解决方案 引入大小等于set的数组.使数组元素保存集合中每个元素的地址.生成以数组/集合大小为界的随机整数R,在 ..
发布时间:2022-01-17 18:45:01 C/C++开发

如何在使用算法保持原始排序的同时从未排序的 std::vector 中删除重复项?

我有一个整数数组,我需要从中删除重复项,同时保持每个整数第一次出现的顺序.我可以看到这样做,但想象有更好的方法可以更好地利用 STL 算法?插入超出了我的控制范围,因此我无法在插入之前检查重复项. int unsortedRemoveDuplicates(std::vector &numbers) {std::set唯一号码;std::vector::iterator all ..
发布时间:2022-01-10 13:06:05 C/C++开发

STL 算法:为什么没有额外的容器接口(除了迭代器对)?

我想知道为什么 STL 不重载它们的算法函数,这样我就可以通过简单地提供一个容器而不是采用更冗长的方式来传递开始 + 结束迭代器来调用它们.我当然理解为什么我们还想使用迭代器对来处理容器/数组的子序列,但是,几乎所有对这些方法的调用都使用整个容器: std::for_each(myVector.begin(), myVector.end(), doSomething); 我觉得只写更方便、可读 ..
发布时间:2022-01-07 11:29:07 C/C++开发

如何将 std::find/std::find_if 与自定义类对象的向量一起使用?

我有一个表示名为 Nick 的用户的类,我想在其上使用 std::find_if,我想在其中查找用户列表向量是否有对象包含在我传入的相同用户名中.我尝试为要测试的用户名创建一个新的 Nick 对象并重载 == 运算符 和然后尝试在对象上使用 find/find_if: std::vector用户列表;std::string 用户名 = "尼古拉斯";if (std::find(userlist ..
发布时间:2022-01-07 11:08:26 C/C++开发

使用带有 STL 算法的本地类

我一直想知道为什么不能使用本地定义的类作为 STL 算法的谓词. 在问题中:接近STL算法,lambda,本地类和其他方法,BubbaT 提到“由于 C++ 标准禁止将本地类型用作参数" 示例代码: int main() {int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };std::vectorv(数组,数组+10);结构甚至:公共 st ..
发布时间:2022-01-07 10:52:55 C/C++开发

如何相对于另一个向量对向量进行排序?

我有几个具有相同数据类型的向量. v = {5,4,1,2}v2= {2,4,3,5,1,6,8,7}v3 = {1,4,2,3} 有任何方法可以对向量 v2 , v3 ... 进行排序,相对于向量 v 使用 C++ 的 STL(算法) 以便 排序后 v2 将是 {5,4,1,2,3,6,7,8},当它相对于 v 排序时,v3 将是 {4,1,2,3} 当它相对于排序时对 . 编辑: ..
发布时间:2021-08-30 19:26:30 C/C++开发

类指针向量上的 std::sort()

我有一个类指针向量 std::vector列表方块.我想用类的属性之一作为键对其进行排序.这就是我正在做的 bool compById(Square* a, Square* b){返回 a->getId() getId();}std::sort(listSquares.begin(), listSquares.end(), compById) 但是编译器说:错误:没有匹配的函数调用'sort( ..
发布时间:2021-08-30 19:19:17 C/C++开发

std :: copy n个元素或到最后

我想复制最多N个元素. templateOutputIt myCopy_n(第一个输入,最后一个输入,大小计数,输出结果){大小c =计数;while(first!= last& c> 0){*结果++ = *第一++;- C;}返回结果;} 是否可以使用std函数来做到这一点?我还可以: template ..
发布时间:2021-04-19 20:54:29 C/C++开发

为什么fill_n()与vector.reserve()不兼容?

我最近正在学习标准库算法,并对功能 fill_n(iter,n,val) .此功能要求容器从 iter 开始至少具有 n 个元素. 这是测试代码: //版本1,错误向量vec;vec.reserve(10);//仅分配至少10个元素的空间fill_n(vec.begin(),10,0);//版本2,确定向量vec;vec.resize(10);//值初始化的10个元 ..
发布时间:2021-04-19 20:09:24 C/C++开发

将C ++成员函数指针传递给STL算法

我的成员函数如下: XYZ类{上市:浮点函数(float x);私人的:float m_DensityMin;float m_DensityMax;}; 现在,我正在尝试转换 std :: vectorfoo 使用 std :: transform STL算法,方法是传递成员函数 function ,并将结果值存储在向量 bar 中 如果我将该函数用作全局函数,并且应 ..
发布时间:2021-04-19 18:45:07 C/C++开发