草庐IT

STL容器之queue

全部标签

c++ - 在 C++ STL 中访问双端队列元素的最佳方法是什么

我有一个双端队列:dequeMy_Deque;My_Path.push_front('a');My_Path.push_front('b');My_Path.push_front('c');My_Path.push_front('d');My_Path.push_front('e');有这样的输出方式。第一个:deque::iteratorIt;for(It=My_Deque.begin();It!=My_Deque.end();It++)cout第二个:for(i=0;i访问双端队列元素的最佳方式是什么-通过迭代器或像这样:My_Deque[i]?是否有一个deque元素指向每个元素

c++ - 使用STL在列表<>中查找最小值

我有float的列表或vector。如何使用STL算法在列表/vector中找到最小值?我可以通过迭代找到,但是有没有更优雅的方法来做到这一点? 最佳答案 您可以使用std::min_element算法。请注意,它不会比基于迭代的算法更快,它仍然是O(n)复杂度。但是写的代码量会少一些。 关于c++-使用STL在列表中查找最小值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11

C++ 字符串/容器分配

这对于C++非菜鸟来说可能是显而易见的,但它让我有点难过——一个类的字符串成员是否在该类中分配了可变数量的空间?或者它只是在内部分配一个指向内存中其他空间的指针?例如。在这个例子中:classParent{public:vectorChildren;}classChild{public:stringName;}如果我创建一个“newParent()”并添加一些具有不同长度字符串的子项,它是如何在堆上分配的?Parent是4个字节,Child是4个字节(或者任何指针大小,加上固定大小的内部数据),然后是堆上其他地方的随机字符串堆?还是全部捆绑在内存中?我想一般来说,容器类型本身总是固定大

C++ STL : Why is there no upper_bound equivalent that retrieves the greatest element smaller then a specific key?

通常,STL是为提高速度而构建的。然而,在map和set数据结构上只有upper_bound和lower_bound并且没有操作来检索具有小于输入键的最大键的条目k.为什么是这样?我知道我可以简单地做一个lower_bound并做一个--it检索它,但根据数据结构,立即搜索正确的条目可能比搜索另一个条目然后返回一步更有效。例如,std::map使用红黑树,即二叉搜索树。如果upper_bound返回的元素是大于根的最小元素,则--it必须回到根,查询O(logn)的额外成本。如果这是Java,我会接受设计决定。然而,STL是为实现最高速度而构建的,那么为什么要省略此操作?澄清:我不是在

c++ - 如何在 "std::vector<char>"容器中查找单个单词

我有一个混合的二进制文件(即图像)和一些人类可读的数据(即HTTPheader)存储在“std::vector”容器中。(数据以“CRLFCRLF(\r\n\r\n)”指示符分隔)谁能建议如何在“std::vector”容器中找到“\r\n\r\n”的开始位置?是否可以使用STL库执行类似“std::size_tpos=data.find("\r\n\r\n");(其中数据为“std::vector”)”之类的操作?谢谢。 最佳答案 您不需要将要查找的模式放入容器中。一个C字符串就足够了。std::vectorv=....;cons

c++ - 根据成员容器的大小专门化成员函数

我有一个包含一些静态大小容器的类:templatestructPoint{Containercontainer;...voidbar();}Container类可能如下所示:structContainer1{staticconstexprsize_tsize=5;}现在我想根据容器的大小专门化bar方法。我不明白该怎么做。编辑:我想要一个C++11解决方案。C++14可能有效,但我们使用的编译器通常对C++14的支持参差不齐。编辑:StackDanny建议使用Clang而非GCC编译的解决方案。 最佳答案 与其特化,不如使用SFIN

c++ - c++ STL 算法和容器在平台和性能上是否相同?

在学习了大量的c++之后,我现在正在研究STL容器和算法模板库,我主要关心的是,1)这个库在不同平台(如MS、Linux和其他操作系统)上是否相同?2)随着更多地使用STL容器和算法,程序c++模块的质量或效率是否会降低,我认为我无法根据所有需求对其进行自定义。3)这个模板库好用在linux系统编程,内核模块吗?4)最后我可以在编程竞赛中使用它吗,因为它减轻了很多编码和肩上的压力。 最佳答案 1)IsthislibrarysameacrossdifferentplatformslikeMS,linuxnotheros?没有。除了标准

c++ - 如果 malloc(STL 分配器等)请求分配 0 字节会发生什么

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:whatdoesmalloc(0)return?它是否返回零指针?行为是否规范?STL分配器怎么样?我用谷歌搜索,但找不到我要找的答案。编辑:链接的问题没有解释STL分配器。我还有另一个相关问题。如果尝试释放零指针会发生什么情况?allocator.deallocate(0,1);

c++ - 如何实现STL容器中对象的快速释放?

TL/DR:Howcanalargestd::vectorachievesuchfastdeallocationwhencompiledwithreleasesettingsonVisualStudio2012RC?我写了一个类strung其行为类似于std::string作为练习,实现基本的复制和移动语义。classstrung{private:size_tlength_;char*data_;public://--------Constructors--------strung():length_(0),data_(nullptr){};strung(constchar*c_str

c++ - 比较 C++ STL 列表迭代器

我的应用程序中有一个C++STL对象列表,它是在启动时构建的,此后从未更改过;指向同一列表节点的两个独立迭代器是否总是比较相等? 最佳答案 是的。前向迭代器的要求之一是:C++1122.4.5/6:Ifaandbarebothdereferenceable,thena==bifandonlyif*aand*bareboundtothesameobject.标准容器上的所有迭代器(至少)是前向迭代器。 关于c++-比较C++STL列表迭代器,我们在StackOverflow上找到一个类似的