草庐IT

STL容器之queue

全部标签

c++ - 将指针转换为容器类型中的 const

C++提供从T*的隐式转换至constT*.如果我使用T*现在在容器类中,如vector,那么当然没有隐式转换为vector不再。使用reinterpret_cast似乎可以类型转换整个容器,但这样做真的安全吗?templateconstvector&constVector(constvector&vec){returnreinterpret_cast&>(vec);}//Usage:vectorvec1;vectorvec2=constVector(vec1); 最佳答案 butisitactuallysafetodothis?不

c++ - 在模板类中定义迭代器时出现 STL 编译错误

下面的代码给出了错误:error:type‘std::list>’isnotderivedfromtype‘Foo’error:expected‘;’before‘iter’#includetemplateclassFoo{public:std::list::iteratoriter;private:std::listelements;};为什么这是正确的? 最佳答案 你需要typenamestd::list::iterator.这是因为list取决于模板参数,因此编译器无法知道名称iterator到底是什么它将在其中(好吧,从技术

c++ - 涉及STL排序算法的令人困惑的SegFault

我正在尝试使用STL重新创建编程明珠第15栏中的程序。我正在尝试使用字符串和索引vector创建后缀数组。我将我读取的单词列表记录在一个名为input的字符串中,该字符串充当我在程序开头从stdin读取的以''分隔的单词列表。在我到达代码的排序部分之前,一切都按预期工作。我想使用STL的排序算法,但我对我似乎正在创建的段错误感到完全困惑。我有:vectorwords;和全局变量stringinput;我定义了我的自定义比较函数:boolwordncompare(unsignedintf,unsignedints){intn=2;while(((f当我运行代码时:sort(words.b

c++ - OneOfAType 容器——将每个给定类型的容器存储在一个容器中——我在这里是否偏离了基地?

我遇到了一个有趣的问题,它出现在我的一种基于传递的编译器中。每个channel对其他channel一无所知,一个公共(public)对象按照命令链模式沿链向下传递。传递的对象是对文件的引用。现在,在其中一个阶段中,人们可能希望关联一大块数据,例如该文件的SHA512哈希,这需要合理的计算时间。但是,由于该数据block仅在特定情况下使用,我不希望所有文件引用都需要为该SHA512保留空间。但是,我也不希望其他通行证必须一遍又一遍地重新计算SHA512哈希。例如,某人可能只接受与给定的SHA512列表匹配的文件,但他们不希望在文件引用到达链的末尾时打印该值,或者他们可能两者都想要,或者.

c++ - STL 容器和不可复制(和不可移动)的对象

由于STL容器要求所有内容都是可复制和可分配的,那么在处理不可复制的对象时首选的习惯用法是什么?我可以想到两种不同的方法:在STL容器中存储(智能)指针而不是对象。摆脱STL容器并实现我自己的列表(例如,每个对象必须包含指向下一个对象的指针)。第二种方法的主要缺点是析构函数的实现(是否应该以递归方式在当前对象之前销毁“下一个”对象?) 最佳答案 SinceSTLcontainersrequirethatallcontentsbecopyableandassignable,whatisthepreferedidiomwhenworki

c++ - XCode 6.1 - 缺少项目模板(C++ 库和 C++ STL 库)

昨天C++库和STLC++库模板突然从我的XCode6.1安装中消失了。它应该是这样的:现在是这样的:我完全卸载了XCode并重新安装了它,但仍然缺少这些模板。还有其他人遇到同样的问题吗?如何解决? 最佳答案 没关系!选择项目模板的用户界面在XCode6.1中发生了一些变化。以下是创建C++库项目的方法:要创建C++库,请选择库模板(甚至认为描述中说:“此模板构建链接到Cocoa框架的库”。它可能有点令人困惑,但您可以将其更改为C++库下一步)。单击“下一步”,然后您可以选择“框架类型”为“PlainC++Library”、“Coc

c++ - STL C++ 中的内存分配

我对STLC++中的内存重新分配有点困惑。例如,我知道如果我声明一个vector,并继续将元素推回其中,则该vector将在某个时候需要重新分配内存空间并将所有现有元素复制到其中。对于链表,不需要重新分配,因为元素不是连续存储在堆栈中的,每个元素使用一个指针指向下一个元素。我的问题是,C++中的其他STL的情况如何?例如,string、map、unordered_map?他们需要重新分配吗? 最佳答案 (免责声明:标准可能不需要此处指定的所有具体数据结构,但记住它们有助于将规则链接到具体内容)std::string~=std::ve

c++ - 不错的简短且可免费下载的 STL 教程

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。Improvethisquestion我想在面试前复习我的STL知识。谁能推荐简短且可免费下载的STL教程?谢谢。编辑:最好是PDF格式。

c++ - STL + typedefs 与 OOP,最佳实践?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我“长大”学习使用OOP设置数据结构。但现在随着我对C++、STL和Boost的了解越来越多,我发现我的许多数据结构需求可以通过将STL类组合成更复杂的组合来满足,例如:typedefstd::map>CSVData;显然,当我需要混合数据类型时,这有一些限制,但通常我发现自己在避免OOP时可以使用这些STL组合,因为它们的简单性。这是一个普遍的进步吗?

c++ - 为什么 STL 中没有针对每个集合类型的 for_each 成员函数?

例如:v.for_each([](inti){printf("%d\n",i);});如果比常用的更优雅和可读:std::for_each(v.begin(),v.end(),[](inti){printf("%d\n",i);});标准中缺少这样的成员函数是否有正当理由? 最佳答案 这是整个库的标准设计原理:将容器与算法分开。如果按照自己的方式进行,则必须为每个容器Y实现每个功能X,如果您有M个功能和N个容器,则需要M*N个实现。通过使用迭代器并使算法在迭代器而不是容器上运行,您只需实现M个算法和N个迭代器接口(interface