草庐IT

STL容器之queue

全部标签

c++ - 是否有像管道一样工作的 C++ STL 类?

在抽象术语中,管道是一种具有破坏性读取的流/FIFO样式容器。它有一个read()方法,可以一次复制所有数据block,并且可以像get和put一样处理单个字节。但是,当read或get返回时,从管道复制出的数据将从管道的内部缓冲区中删除-与文件或任何其他容器类型不同。大多数(全部?)STL容器不提供类似的read()到缓冲区命令。是否有带有pop_many()成员的fifo容器类型?stringstream是我能想到的最接近的东西,因为它维护一个内部读取指针,并且future的读取将阻塞,直到流再次填满。从API的角度来看,容器是空的,但使用的数据必须手动进行垃圾收集。在C++中是否

c++ - PPL容器性能

我正在编写一个服务器应用程序,它一次从多个来源获取数据并将其存储在它的内部数据库中(目前是一个std::set)。我刚刚查看了Microsoft的ConcRTPPL数据结构,想知道它们的效率与在std::unordered_set上使用细粒度互斥体相比如何。例如,两个代码片段之间是否存在很大的性能差异:voidStdWithMutex(void){std::ofstreamoutFile("Test.tmp");std::lock_guardlockGuard(m_mutex);//Iteratethroughthedataandwriteittoafile://m_setDatais

c++ - 如何实现一个公开多个范围的容器?

我有一个容器(除其他外)公开了一个字符串缓冲区,以及该字符串缓冲区的大写版本。(好吧,它不仅仅是大写,但在概念上是相似的)我想允许调用者做类似的事情:containerc("Example");autoconstiter=c.begin()+2;std::printf("%c\n",iter->get_source());//Printsastd::printf("%c\n",iter->get_upper());//PrintsAiter->set('x');std::puts(c.get());//PrintsExxmplestd::puts(c.get_upper());//Pr

适合在动态有序列表中查找第 n 个元素的 C++ STL 容器?

使用像AVL或Red-Black-Tree这样的平衡BST,我们可以轻松维护一组值:插入/删除/查询给定值。计算小于/大于给定值的元素。排序后找到秩为k的元素。以上所有内容都可以在O(logN)复杂度中归档。我的问题是,是否有任何STL容器以相同的复杂度支持上述所有3个操作?我知道STLset/multiset可用于1和2。我检查了基于_Rb_tree的容器map/set/multiset,但没有一个提供对3的支持。是否有子类化ext/rb_tree的方法来解决这个问题? 最佳答案 您要查找的数据结构是orderstatistict

c++ - 是否有其他容器类型的 string_view 等效项?

Astring_view是:Anobjectthatcanrefertoaconstantcontiguoussequenceofchar-likeobjectswiththefirstelementofthesequenceatpositionzero.Atypicalimplementationholdsonlytwomembers:apointertoconstantCharTandasize.这允许对string进行稳健但轻量级的检查。它非常适合递归函数,否则这些函数将被迫使用char*或string::iterator来减少字符串。我的问题是其他容器呢?为什么只为string

【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

文章目录一、元素累加算法-accumulate函数1、函数原型分析2、代码示例二、元素填充算法-fill函数1、函数原型分析2、代码示例一、元素累加算法-accumulate函数1、函数原型分析在C++语言的标准模板库(STL,STLStandardTemplateLibrary)中,提供了accumulate元素累加算法函数用于将一个容器中的元素进行累加操作;accumulate元素累加函数将输入容器的[起始迭代器,终止迭代器)范围内的元素在一个基础值的基础上进行累加,得到一个累加值;最终accumulate函数返回最终累加后的值;accumulate元素累加算法函数原型如下:templat

c++ - 以交替模式合并两个 STL vector

我有两个STLvectorA和B,需要将它们合并到第三个vector中,其中元素应该以某种方式排序,输出vector中的每个第n个元素都应该是vectorB。我当前的代码看起来像像这样:std::vectora(10,4);std::vectorb(10,8);std::vectorc;staticconststd::size_tSTEP(3);std::vector::const_iteratorbIt=b.begin();for(std::vector::const_iteratoraIt=a.begin();aIt!=a.end();++aIt){c.push_back(*aIt

容器下在 Triton Server 中使用 TensorRT-LLM 进行推理

1.TensorRT-LLM编译模型1.1TensorRT-LLM简介使用TensorRT时,通常需要将模型转换为ONNX格式,再将ONNX转换为TensorRT格式,然后在TensorRT、TritonServer中进行推理。但这个转换过程并不简单,经常会遇到各种报错,需要对模型结构、平台算子有一定的掌握,具备转换和调试能力。而TensorRT-LLM的目标就是降低这一过程的复杂度,让大模型更容易跑在TensorRT 引擎上。需要注意的是,TensorRT针对的是具体硬件,不同的GPU型号需要编译不同的TensorRT格式模型。这与ONNX模型格式的通用性定位显著不同。同时,TensortR

c++ - 允许访问 C++ 中的容器对象

我有一个像下面这样的类:classFoo{private:std::mapbars_by_name;std::mapbazs_by_name;};现在我想允许用户访问这两个集合,但隐藏我将对象存储到std::maps中的实现细节。相反,我想要返回例如成员函数集合的const迭代器,甚至可能是从两个集合返回对象的自定义迭代器,因为Bar和Baz属于同一类层次结构。考虑到风格,在C++中执行此操作的正确方法是什么?在Java中,我可能会将方法的返回类型设置为Iterable或将集合包装到unmodifiableCollection中。 最佳答案

c++ - 是否有任何库为不可默认构造的不可复制类型提供容器?

我正在寻找一个提供容器的库,例如std::array(编译时固定大小,但不支持聚合初始化)和std::vector(可变大小,连续内存)适用于不可复制且不可默认构造的类型。具体来说,我希望能够将一组函数传递给构造函数,这些函数用于获取所包含对象的构造函数的参数。类似于emplace_back,但作为构造函数并使用惰性求值参数。这是一个(自然不起作用的)示例:classstubborn_type:boost::noncopyable{public:explicitstubborn_type(intvalue):value(value){}private:constintvalue;};s