草庐IT

stl-algorithm

全部标签

c++ - 查看 STL 容器中的下一个元素

是否可以在不更改迭代器的情况下查看迭代器当前指向的容器中的下一个元素?例如在std::set中,intmyArray[]={1,2,3,4};setmySet(myArray,myArray+4);set::iteratoriter=mySet.begin();//peekthenextelementinsetwithoutchangingiterator.mySet.erase(iter);//erasetheelementifnextelementisn+1 最佳答案 C++0x添加了一个方便的实用函数,std::next,它复

c++ - STL 的 'partial_sum' 有什么实际用途?

partial_sum算法在STL中的实际用途是什么/在哪里??还有哪些其他有趣/重要的示例或用例? 最佳答案 我用它来减少我的玩具lambda演算解释器中一个简单的标记清除垃圾收集器的内存使用量。GC池是一个大小相同的对象数组。目标是消除未链接到其他对象的对象,并将剩余对象压缩到数组的开头。由于对象在内存中移动,因此每个链接都需要更新。这需要一个对象重映射表。partial_sum允许以压缩格式(每个对象只有一位)存储表,直到扫描完成并释放内存。由于对象很小,这显着减少了内存使用。递归标记使用的对象并填充bool数组。使用remo

c++ - STL 的 'partial_sum' 有什么实际用途?

partial_sum算法在STL中的实际用途是什么/在哪里??还有哪些其他有趣/重要的示例或用例? 最佳答案 我用它来减少我的玩具lambda演算解释器中一个简单的标记清除垃圾收集器的内存使用量。GC池是一个大小相同的对象数组。目标是消除未链接到其他对象的对象,并将剩余对象压缩到数组的开头。由于对象在内存中移动,因此每个链接都需要更新。这需要一个对象重映射表。partial_sum允许以压缩格式(每个对象只有一位)存储表,直到扫描完成并释放内存。由于对象很小,这显着减少了内存使用。递归标记使用的对象并填充bool数组。使用remo

c++ - 用 STL 维护最小堆的简单方法?

据我所知,对于用户定义的结构,这很容易。只需重载运算符#include#include#includeusingnamespacestd;boolcomp(constint&a,constint&b){returnav(myints,myints+5);vector::iteratorit;make_heap(v.begin(),v.end(),comp);cout结果是:initialminheap:551030201530101520现在pop_heap,push_heap不会正确维护最小堆?有没有更简单的方法来实现这一点?谢谢!编辑:对不起,我没有仔细检查手册。是的,将comp传

c++ - 用 STL 维护最小堆的简单方法?

据我所知,对于用户定义的结构,这很容易。只需重载运算符#include#include#includeusingnamespacestd;boolcomp(constint&a,constint&b){returnav(myints,myints+5);vector::iteratorit;make_heap(v.begin(),v.end(),comp);cout结果是:initialminheap:551030201530101520现在pop_heap,push_heap不会正确维护最小堆?有没有更简单的方法来实现这一点?谢谢!编辑:对不起,我没有仔细检查手册。是的,将comp传

c++ - 在编译时确定类型是否为 STL 容器

我想编写一个模板,在编译时确定一个类型是否是STL容器。我有以下代码:structis_cont{};structnot_cont{};templatestructis_cont{typedefnot_contresult_t;};但我不确定如何为std::vector,deque,set创建必要的特化等等…… 最佳答案 注意:以下代码取自一个名为pretty-print的优秀实用程序作者@KerrekSB(在stackoverflow上有一个topic)。免责声明:我不知道我是否可以在未经原作者许可的情况下复制并粘贴此代码。@Ke

c++ - 在编译时确定类型是否为 STL 容器

我想编写一个模板,在编译时确定一个类型是否是STL容器。我有以下代码:structis_cont{};structnot_cont{};templatestructis_cont{typedefnot_contresult_t;};但我不确定如何为std::vector,deque,set创建必要的特化等等…… 最佳答案 注意:以下代码取自一个名为pretty-print的优秀实用程序作者@KerrekSB(在stackoverflow上有一个topic)。免责声明:我不知道我是否可以在未经原作者许可的情况下复制并粘贴此代码。@Ke

c++ - STL vector reserve() 和 copy()

您好,我正在尝试使用以下2行缩写的代码执行从一个vector(vec1)到另一个vector(vec2)的复制(完整的测试应用程序如下):vec2.reserve(vec1.size());copy(vec1.begin(),vec1.end(),vec2.begin());虽然对vec2的调用设置了vectorvec2的容量,但将数据复制到vec2似乎并未填充从vec1到vec2的值。将copy()函数替换为对push_back()的调用按预期工作。我在这里错过了什么?感谢您的帮助。vectest.cpp测试程序,然后是结果输出。编译器:cygwin上的gcc3.4.4。自然/***

c++ - STL vector reserve() 和 copy()

您好,我正在尝试使用以下2行缩写的代码执行从一个vector(vec1)到另一个vector(vec2)的复制(完整的测试应用程序如下):vec2.reserve(vec1.size());copy(vec1.begin(),vec1.end(),vec2.begin());虽然对vec2的调用设置了vectorvec2的容量,但将数据复制到vec2似乎并未填充从vec1到vec2的值。将copy()函数替换为对push_back()的调用按预期工作。我在这里错过了什么?感谢您的帮助。vectest.cpp测试程序,然后是结果输出。编译器:cygwin上的gcc3.4.4。自然/***

An Efficient Blockchain Consensus Algorithm Based on Post-QuantumThreshold Signature提升区块链效率

AnEfficientBlockchainConsensusAlgorithmBasedonPost-QuantumThresholdSignaturePost-quantumthresholdsignaturescheme一个signature被一组人使用并且有一组有一个manager,组管理员分别生成私钥并安全发送给n个用户,根据私钥生成公钥。n个用户中至少有t个用户可以为一条消息生成一个有效的签名,该签名看起来像n个用户签名的签名。只有群组管理员可以验证签名,从而知道谁在签名threshold签名产生   threshold签名认证 转化成多元线性方程组用高斯消去法或高斯-约当消去法在有