草庐IT

STL容器之queue

全部标签

c++ - 具有不同包含类型的 STL 容器?

假设我有不同类型的结构组件。也许我有TransformComponent和RigidBodyComponent现在,这就是问题所在:我想要类似std::map的东西将组件类型和id映射到组件的位置。ids是将组件链接在一起的东西。我应该为此使用哪种容器?我不能使用std::map>自类型T取决于您用来为第一张map编制索引的类型索引。 最佳答案 您的用例听起来像是多态性的典型使用。您应该知道,任何在单个容器中存储“非同质”类型的尝试都会带来多态性的性能损失。至于您是使用C++提供的“开箱即用”多态性还是寻求自定义解决方案-这完全取决

Docker-Compose无法提出交叉容器请求

我正在在网络问题上运行服务docker-compose。从本质上讲,我只是想通过Kong向我设置的简单烧瓶API提出GET请求。docker-compose.yml在以下:“3.0”services:postgres:image:postgres:9.4container_name:kong-databaseports:-"5432:5432"environment:-POSTGRES_USER=kong-POSTGRES_DB=kongweb:image:kong:latestcontainer_name:kongenvironment:-DATABASE=postgres-KONG_PG_

c++ - 使用序列容器解析命令行选项?

这个问题之前有人提出过,但似乎没有一个答案提供了boost风格的泛型编程的替代方案。像许多人一样,我使用boost:program_options来解析命令行选项。我当前的项目是一个使用顺序不可互换的运算符操作数据(例如图像)的程序,例如加3然后乘以2$manipulate-insomeimage.tif-a3-m2一般不等同于乘以2然后加3$manipulate-insomeimage.tif-m2-a3-in选项将文件内容加载到vectorcurrent_image中,命令行上的每个选项都会修改current_image。但是variable_map容器不保留添加选项的顺序。至少没

【leetcode】622. 设计循环队列(Circular Queue)

文章目录1.怎么设计循环队列?2.数组实现循环队列往期相关文章推荐:1.队列(Queue)2.栈(Stack)之浅谈数组和链表实现栈各自的优缺点3.线性表之链表(LinkedList)4.线性表之顺序表(SequenceList)1.怎么设计循环队列?  循环队列也叫环形队列,可以用数组或循环链表实现,使用场景是在那种只需要固定空间大小,且一直有插入删除的情况。设计循环队列最大的问题是怎么确定队列是空还是满的状态,如果是增加额外变量size记录数据个数,则很容易解决这个问题,不过这里不打算使用size的方式。下面将一步步分析使用数组的方式如何实现,至于循环链表实现队列,看似天然循环,实际还是很

c++ - 如何编译在docker中使用内核函数的C代码并在容器中使用pci设备?

我有一个Makefile一些使用PCI设备的C++代码all:g++-oexecutablemain.cppdragon.pb.cc-std=c++11-O3-I/usr/include/postgresql-I/usr/include/hiredis-lzmq-lprotobuf-lpthread-lpq-lhiredisclean:rmexecutable并且它依赖于这个使用内核函数的C库。这个库的Makefile是#distandbuildarefolders,notphonytargets.PHONY:allpackagecleanall:dragon.pb.ccdragon_

c++ - 琐碎的分配器感知容器?

我正在研究/玩分配器,试图了解它是如何工作的。但是我在尝试实现接受分配器的普通容器时遇到了问题。现在我结束了这个:template>classContainer{public:usingallocator_type=Allocator;usingvalue_type=T;usingpointer=typenamestd::allocator_traits::pointer;usingreference=value_type&;usingsize_type=std::size_t;Container(size_typen=0,constallocator_type&allocator=a

c++ - 为什么 std::queue 不实现 insert() 而 std::deque 实现?

我正在阅读std::queue我想知道为什么没有方法可以通过一次操作有效地插入多个元素,而std::deque报价std::deque::insert? 最佳答案 Insert允许插入到结构中的任意位置。std::queue是FIFO结构的抽象接口(interface)。你只能在最后添加东西。底层结构不一定具有插入任意位置的有效方法(例如考虑std::vector)。因此std::queue没有通用的插入成员函数。由于一般的插入函数需要迭代器位置参数,提供多重插入是为了方便,这样您就不必跟踪下一个迭代器位置。推回不需要这个,因为不需

具有 4 字节对齐缓冲区的 C++ `std::string` 类容器

我需要一个C++中的数据结构,它的作用类似于标准的字节容器,但将缓冲区对齐为四个字节的倍数。我想尽可能多地重用标准库抽象,而不是滚动我自己的抽象。到目前为止,我一直在使用std::string和std::vector来达到这个目的。不幸的是,我收到了有关最新MacOS的错误报告,显然string::data()不再是4字节对齐的,而是地址与1mod4一致。当我看到这个时,我当然没有意识到规范保证字符串将按4字节对齐。我可以切换到vector,但不幸的是现在我不确定为什么这应该是4字节对齐的。即使使用自定义分配器,vector实现也可能在它分配的缓冲区开始时做一些奇怪的事情。我的问题:从

c++ - STL 容器的右值引用限定符

为什么元素访问STL容器的成员函数,例如std::array::operator[]或std::vector::operator[]没有右值引用限定符重载?我当然可以做到std::move(generate_vector()[10]),但我很好奇在标准化引用限定符时是否考虑添加右值引用限定符重载。我认为std::array和std::tuple实际上是同一件事,后者的“元素访问函数(即std::get)”对于const与非const以及左值与右值的所有组合都重载了。为什么不是前者?将右值引用限定的元素访问成员函数(返回右值引用)添加到我的自定义容器是个好主意吗?编辑RichardCri

c++ - 指向 boost 指针容器中元素的指针

我刚刚开始使用boost::ptr_vector。我有一个ptr_vectorpctr作为一个类A的成员,并希望另一个类B引用pctr中的元素。在构造B类对象时,我想在pctr中存储一个指针。由于指针容器不允许访问指针(但只能访问引用),我必须从pctr中获取引用的地址,然后将其存储在类型B的对象中。但是获取引用的地址似乎不直观。有更好的选择吗? 最佳答案 正如您所发现的,boost指针容器可以很好地保护它们的指针。当然,您可以通过获取它将产生的引用的地址来打败它,但请注意,您可能会通过卡在这些指针上来削弱指针容器对权威所有权的声明