草庐IT

stl-algorithm

全部标签

STL常用梳理——STACK、QUEUE

STL——适配器篇1、ListSTLlist容器介绍list使用2、适配器介绍3、Deque容器Stack、Queue适配器实现1、ListSTLlist容器介绍STLlist容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。可以看到,list容器中各个元素的前后顺序是靠指针来维系的,每个元素都配备了2个指针,分别指向它的前一个元素和后一个元素。其中第一个元素的前向指针总为null,因为它前面没有元素;同样,尾部元素的后向指针也总为null。基于这样的存储结构,list容器具有一些其它

C++ [STL-简介]

本文已收录至《C++语言和高级数据结构》专栏!作者:ARMCSKGT​​​​​​​​文章目录前言正文简介关于STL各种版本STL组件容器迭代器配接器(适配器)算法仿函数空间配置器STL的重要性学习STL的意义如何学习STLSTL的缺陷最后前言STL(standardtemplatelibaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。正文简介关于STLSTL(StandardTemplateLibrary)标准模板库,从根本上说,STL是一些数据结构的集合,因为是组织和存放数据简称为容器,这些“容器”有list、vecto

python读取.stl文件(以及转换为obj方法)

目录.1文本方式读取 1.2stl解析1.3stl创建  .2把点转换为.stl.3stl组装.4stl转obj(带f法向量的obj).5ply生成.1文本方式读取 代码如下stl_path='/home/pxing/codes/point_improve/data/003_cracker_box/0.stl'points=[]f=open(stl_path)lines=f.readlines()prefix='vertex'num=3forlineinlines:#print(line)ifline.startswith(prefix):values=line.strip().split()

c++ - 多少 STL 是太多了?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我在std::for_each、bind等方面使用了很多STL代码,但我注意到有时STL用法不是个好主意。例如,如果您有一个std::vector并且想对vector的每个项目执行一个操作,您的第一个想法是使用它:std::for_each(vec.begin(),vec.end(),Foo())又优雅又ok,有一段时间了。但是随后出现第一组错误报告,您必须修改代码。现在你应该添加参数来调用Foo(),所

c++ - 如何使用 C++ STL 算法重写嵌套循环?

循环很简单,但我似乎无法使用STL算法来给出下面相同的嵌套循环。constinta_size=5;//inputconstintc_size=2;//outputconstintb_size=a_size*c_size;//multipliersstd::vectora(a_size);std::vectorb(b_size);std::vectorc(c_size);//fillaandbwithdata//thisnestedloopfor(inti=0;i我想这样做的原因是为了Boost.Compute库,它会使用类似STL的算法(std::transform、std::for_

c++ - 如何在 Windows 内核中使用 std::map? STL端口?

在我最近的项目中,强烈要求使用std::map这样的数据结构。但是,std::map的默认实现使用C++异常,这在Windows内核中是不允许的。我认为很难在短时间内重新发明std::map而没有任何错误或性能损失。所以,我想知道在Windows内核中是否存在std::map的替代。STLPort可能是一个候选者。但我不知道如何仅提取其std::map并禁用C++异常。 最佳答案 内核模式下的C++代码在没有(完整的)标准库的问题之前有几个(严重的)限制。参见http://msdn.microsoft.com/en-us/libra

algorithm - 不清楚 Nagle 的算法

出于无聊的好奇心,我一直在研究Nagle的算法。我理解它背后的基本概念(TCP数据包包含大量开销,尤其是在处理小负载时),但我不确定我是否理解了实现。我正在阅读thisarticle在维基百科上,但我仍然不清楚它是如何工作的。让我们以Telnet连接为例。连接建立,我开始打字。假设我键入三个字符(例如cat)并按回车键。现在我们讨论的cat\r\n仍然只有5个字节。我认为这不会被发送,直到我们排队足够的字节来发送-然而,它确实立即被发送(从用户的角度来看),因为cat是点击返回立即执行。我认为我对算法的工作原理存在根本性的误解,特别是关于“如果管道中仍有未确认的数据,则入队,否则立即发

C++ STL 的 copy() 异常安全

如果我这样做了std::copy(source,source+size,destination);我有强大的异常安全保证吗?IE。如果std::copy抛出,destination保持不变? 最佳答案 附录E:标准库异常安全来自Stroustrop的C++编程语言是freelyviewablefromhiswebsite.由此而来:Thecopy()algorithm(§18.6.1)doesnotofferthestrongexception-safetyguarantee.Itdoesnotguaranteethatitwill

c++ - STL 容器 : Constructor's Allocator parameter and scoped allocators

STL容器有一个模板参数可以选择自定义分配器。花了一段时间,但我想我明白它是如何工作的。不知何故,它并不是很好,因为给定的分配器类型没有直接使用,而是反弹到另一种类型的分配器。我终于可以使用它了。看完API我认识到也有可能将分配器作为构造函数参数。但是,如果容器在内部从模板参数重新绑定(bind)给定的分配器,我怎么知道容器使用哪种分配器?此外,我读到C++11现在使用范围分配器,它允许将容器的分配器重用于其包含的容器。启用了作用域分配器的容器的实现与不知道作用域容器的容器的实现有何不同?很遗憾,我找不到任何可以解释这一点的东西。感谢您的回答! 最佳答案

c++ - 使用 STL 排序功能对列表进行排序

我正在尝试按降序对包含struct项的列表(类的一部分)进行排序,但它无法编译:error:nomatchfor'operator-'in'__last-__first'sort(Result.poly.begin(),Result.poly.end(),SortDescending());这里是SortDescending:structSortDescending{booloperator()(constterm&t1,constterm&t2){returnt2.pow谁能告诉我怎么了? 最佳答案 标准算法std::sort需要