草庐IT

STL容器之queue

全部标签

c++ - <queue> 的 emplace 和 push 的区别

之间有什么区别?的安置和插入?这里是关于std::queue::emplace的解释和std::queue::push.这两种方法都在其当前最后一个元素之后添加元素,返回None. 最佳答案 push()将已构造对象的拷贝作为参数添加到队列中,它采用队列元素类型的对象。emplace()在队列末尾就地构造一个新对象。它将队列的元素类型构造函数采用的参数作为参数。如果您的使用模式是创建一个新对象并将其添加到容器中,则可以使用emplace()简化几个步骤(创建一个临时对象并复制它)。例子#include#includeusingnam

c++ - 使用什么类型的堆以及 c++ 中 std::priority_queue 的时间复杂度?

这个问题在这里已经有了答案:EfficiencyoftheSTLpriority_queue(6个答案)关闭6年前。我想知道什么我想问一下下面两个问题。C++中的std::priority_queue使用什么类型的堆?C++中std::priority_queue的top(),pop(),push()操作的时间复杂度是多少?我在网上查了,没找到答案。请告诉我答案。如果您不知道C++中的所有版本,请告诉我GCCC++11或C++14的答案。我为什么需要我想实现Dijkstra'sAlgorithm对于最短路径问题。令图中的顶点数=|V|,边数=|E|。使用BinaryHeap的时间复杂度

c++ - 我们可以使用异构查找比较器对 STL 关联容器执行 "partial-match"搜索吗?

所以我在STL的关联容器(自C++14起)中寻找对异构查找的支持,并对我们可以做什么和不应该做什么感到有点困惑。以下片段#include#include#includestructpartial_compare:std::less{//"full"key_typecomparisondonebystd::lessusingless::operator();//"sequence-partitioning"comparison:onlycheckpair'sfirstmemberbooloperator()(std::pairconst&lhs,intrhs)const{returnlh

【云原生系列】容器安全

    容器之所以广受欢迎,是因为它能简化应用或服务及其所有依赖项的构建、封装与推进,而且这种简化涵盖整个生命周期,跨越不同的工作流和部署目标。然而,容器安全依然面临着一些挑战。虽然容器有一些固有的安全优势(包括增强的应用隔离),但也扩大了企业的威胁范围。如果不能识别和规划与容器相关的特定安全措施,可能会增加企业的安全风险。保证容器安全的措施可以从以下几方面来考虑:容器环境基础设施的安全、容器镜像的安全、容器运行时安全:容器环境基础设施的安全性1.主机安全        所有主机操作系统,甚至是容器专用的操作系统,都提供基本的系统组件。与其它任何软件一样,这些组件也会有漏洞,而且由于这些组件存

c++ - 如何测试模板参数是否是一对关联容器?

假设我想制作一个模板化函数,返回任何STL容器的第一个元素。一般的方式是:templateContainer::value_typefirst(Containerc){return*(c.begin());}这适用于vector、列表、双端队列、集合等。然而,对于成对关联容器(std::map),如果想要returnc.begin()->second;如果我有一对关联容器,我该如何测试(在函数中或使用模板特化)?STL容器似乎没有附加任何特征。是否可以检查它是否具有::key_type? 最佳答案 你可以很容易地做到:namespa

c++ - 是否有用于 C++ 的并发容器库

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Isthereaproductionreadylock-freequeueorhashimplementationinC++我正在寻找无锁容器的实现:队列堆栈HashMap等...如何阻塞容器:阻塞队列阻塞堆栈有没有好的图书馆?我不想编写这些数据结构......我更愿意使用已经过社区测试的东西。

c++ - C++ 的可观察容器

是否有C++容器类的实现,它以类似于C#的ObservableCollection的方式支持通知? 最佳答案 没有像您描述的那样的标准类,但是Boost.Signals是一个非常强大的通知库。我会为在更改时发出信号的对象创建一个包装器,如下所示:#include#include#include//Wrappertoallownotificationwhenanobjectismodified.templateclassObservable{public://Instantiateoneofthesetoallowmodificati

c++ - 使用基于动态/状态的分配器的 STL 实现?

有谁知道允许在使用前将动态分配器传递给容器实例的STL实现。场景是我们有一个管理多个内存池的通用内存分配器,对于STL::vector的每个实例,我们希望从不同的内存池分配每个实例。标准STL实现的问题是您只能根据类型定义内存池,即所有类型为int的vector将从同一个池中分配。我已经将默认的STL::allocator换成了一个状态,即我们要从中分配此实例的池,但这对于STL::list来说效果不佳,它在默认构造函数。由于与我们的库相关的原因,我们在ctor中也没有针对所有对象的有效池,因此我们希望在用户可以使用STL容器之前调用“设置内存池”函数。有人遇到过支持这种事情的实现吗?

c++ - 跨流行工具链的标准容器重新分配乘数

std::basic_string和std::vector等容器在内部容量用完时执行自动重新分配。该标准规定,在重新分配后,.capacity()>=.size()。主流工具链在执行重新分配时使用的一些实际乘数是什么?更新到目前为止,我有:Dinkumware:1.5(shipswithMSVSandpossiblyICC)GNUlibstdc++:2(shipswithGCCandpossiblyICC)RW/Apachestdcxx:1.618(akaφ)STLport:2 最佳答案 旧问题的新答案。基本原理:可以通过编程方式和

符合 c++ STL 的迭代器迭代器

我想做什么我有一种划分事物的方法。此方法不会对数组进行完全排序;它只是简单地对数组进行分区,以便一侧的所有元素(某些预先确定的“中心”或“中点值”——但它不必导致均匀拆分)小于“中心”和另一侧的所有元素都大于中心。Point:它不是传统意义上的“排序”;这是一个分区。当我分区东西时,我需要保留一把key;以便在交换事物时,交换key;如果将来某个时候我想撤消分区,我可以根据key重新排列内容。显然,要根据键值重新排列事物,我可以执行以下操作std::vector>vp;std::vector::iteratoritKey(key.begin());//itThingie_beginan