草庐IT

stl_algobase

全部标签

c++ - 为什么 gcov 为 STL header 创建代码覆盖率数据?

当我运行gcovfoo.cpp时,它不仅会生成foo.cpp的代码覆盖率报告,还会生成foo.cpp使用的所有STLheader的代码覆盖率报告。有没有办法避免这种情况?它似乎忽略了像这样的标准库头文件.编辑刚在gcc邮件列表上看到这篇文章:Re:gcc,gcovandSTL 最佳答案 -r--relative-onlyOnlyoutputinformationaboutsourcefileswitharelativepathname(aftersourceprefixelision).Absolutepathsareusually

现有数据的 C++ STL vector

我可以使用我预先存在的数据创建一个std::vector而不是分配新内存和复制数据吗?更清楚地说,如果我有一个内存区域(一个c数组或另一个vector的一部分或其他)并且我想提供对它的类似vector的访问,我可以创建一个vector并告诉它使用这个内存块? 最佳答案 不,但是您可以编写自己的类来执行此操作。由于这是一个相当普遍的需求,如果其他人已经这样做了,我也不会感到惊讶。然而,正常的C++方法是编写模板代码来对迭代器进行操作。您可以为vector的任何部分或C数组的任何部分(以及其他许多部分)创建迭代器。因此,为迭代器编写模板

c++ - 是否有一些 STL 函数可以获取两个 C++ vector 的笛卡尔积?

假设b=["good","bad"]a=["apple","mango"]thenoutput=["goodapple","goodmango","badapple","badmango"]我知道这可以通过嵌套的for循环来完成,但是是否有一些优雅的代码可以使用C++STL来完成此操作? 最佳答案 这是一行(从JonathanMee's回答postedhere复制):for(size_ti=0,s=a.size();i完整示例here. 关于c++-是否有一些STL函数可以获取两个C++

c++ - Visual Studio 2013 C++ : STL container's elements display in debugger

C++调试期间的MSVS2013(Autos和Watch窗口)仅显示STL容器的大小:MSVS2010:"[9](9,8,7,6,5,4,3,2,1)"MSVS2013:"{size=9}"需要行扩展才能在MSVS2013中查看元素的值。有没有办法让MSVS2013在调试器中像MSVS2010一样显示STL容器?我试图删除STL.natvis(它在2013年使用),但没有帮助:autoexp.dat仍然没有被使用。是否可以强制MSVS2013使用autoexp.dat?是否可以修改STL.natvis脚本(从容器元素的值构造DisplayString)?还有其他办法吗?

c++ - 容器优化:为什么 STL 容器方法参数不再使用 allocator::const_reference typedef?

阅读之前:const_reference是typedef,不需要是constT&正如您在std::vector::const_reference=bool中看到的那样.请在阅读其余部分时牢记这一点以正确理解它(正如评论中所建议的那样,这对很多人来说很难)。我想为简单类型(例如int)使用STL容器,但发现它们使用了次优的constT&“反模式”-它适用于大类,但在未内联时对于简单/基本类型不是最优的-考虑嵌入式系统,例如在ARM/ATSAM4L上,带有实例化。问题是:为什么例如vector::push_back使用(constvalue_type&)的参数重新设计而不是自C++11以来

c# - C++ STL 集合和 C# 集合的比较?

我仍在学习C#并且惊讶地发现List更像是std::vector比std::list.有人可以根据STL描述所有C#集合吗(或者如果STL比较困难,标准概念数据类型与Wikipedia链接?我希望该引用会广泛有用。感兴趣的集合的最小列表包括(随意添加其他):数组列表数组列表哈希表字典列表词典排序字典排序列表队列堆栈编辑:我刚刚发现了这个可能感兴趣的类似问题:MappingbetweenstlC++andC#containers 最佳答案 这是我发现的(忽略旧的非通用集合):Array-C数组,尽管.NET数组可以具有非零起始索引。L

c++ - 为什么使用局部结构作为 STL 函数参数的代码不能在 g++ 中编译?

我有这样的代码运行良好:#include#includecharx[11]="ABCDEFGHIJ";chary[11];structF{charoperator()(charc)const{returnc+1;}};intmain(){std::transform(x,x+10,y,F());y[10]=0;std::cout但是如果我把它改成这种风格:#include#includecharx[11]="ABCDEFGHIJ";chary[11];intmain(){structF{charoperator()(charc)const{returnc+1;}};std::trans

c++ - 所有 STL 容器的通用哈希函数

我正在使用std::unordered_map在我的实现中。我将使用任何STL容器作为key。我想知道是否可以为任何正在使用的容器创建一个通用的哈希函数。ThisSO中的问题为所有STL容器提供通用打印功能。虽然你可以拥有它,但为什么你不能拥有定义一切的哈希函数之类的东西?是的,一个大问题是它需要快速高效。我正在考虑做一个简单的哈希函数,将键的值转换为size_t并做一个简单的功能,如this.这可以做到吗?PS:请不要使用boost图书馆。谢谢。 最佳答案 我们可以通过模仿Boost并组合哈希来得到答案。警告:组合散列,即从事物的

c++ - 当所有元素都应该是唯一的时,为什么 STL set 有 count()?

我能理解multiset有count(),用来统计一个值出现的次数,因为multiset中元素可以重复。但是,当所有值都已经唯一时,设置count()有什么意义呢? 最佳答案 count是associativecontainerrequirements的一部分(1)。每个关联容器都需要将其作为其接口(interface)的一部分提供,即使结果始终为零或一(如std::set的情况)。(1)这是描述关联容器概念的SGISTL文档的链接;C++标准中定义的概念可能略有不同,但差别不大。 关于

c++ - STL 映射运算符 [] 不好吗?

我的代码审查员指出map的operator[]的使用非常糟糕并导致错误:map[i]=newsomeClass;//potentialdanglingpointerwhenexecutedtwice或者if(map[i]==NULL)...//implicitlycreatetheentryiinthemap虽然我在阅读API后了解到insert()更好的风险,因为它检查重复项,从而可以避免发生悬空指针,但我不明白如果处理对了,为什么[]根本就不能用呢?我选择map作为我的内部容器正是因为我想使用它快速和self解释的索引功能。我希望有人能和我多争论或者站在我这边:)