草庐IT

stl_algobase

全部标签

c++ - 对于 STL 或 !STL,这是个问题

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭3年前。Improvethisquestion毫无疑问,我会选择将STL用于大多数C++编程项目。然而,最近有人向我提出了这个问题,“有没有什么情况下你不会使用STL?”...我想得越多,我就越意识到可能存在我选择不使用STL的情况......例如,一个非常大的长期项目,其代码库预计将持续数年.......也许一个完全适合项目需求的定制容器解决方案值得最初的开销?你怎么看,有没有什么情况下你会选择不使用STL?

c++ - 我可以在初始化列表中用 10 个相同的整数初始化 STL vector 吗?

我可以在初始化列表中使用10个相同的整数来初始化STLvector吗?到目前为止,我的尝试都失败了。 最佳答案 使用适当的构造函数,它接受一个大小和一个默认值。intnumber_of_elements=10;intdefault_value=1;std::vectorvec(number_of_elements,default_value); 关于c++-我可以在初始化列表中用10个相同的整数初始化STLvector吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 程序员应该使用 STL 还是编写自己的代码?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭11年前。社区审核了是否重新打开这个问题11个月前并关闭:基于意见更新问题,以便editingthispost提供事实和引用来回答问题.我对C++数据结构了解不多,但我想知道您(程序员)是使用STL还是编写自己的代码?毕竟STL是为通过数据列表执行搜索、替换等任务而设计的。有些人真的不需要学习太多关于链表、二分搜索等等的知识,因为我可以使用STL。你有什么建议

c++ - 使用 boost 或 STL 对 C++ 中的压缩(锁定)容器进行排序

我想做的事:我想将2个、3个或N个vector排序,锁定在一起,不将它们复制到一个元组中。也就是说,抛开冗长,例如:vectorv1={1,2,3,4,5};vectorv2={11,22,33,44,55};vectorv3={111,222,333,444,555};typedeftupletup_t;sort(zip(v1,v2,v3),[](tup_tt1,tup_tt2){returnt1.get()>t2.get();});for(auto&t:zip(v1,v2,v3))cout()()()这应该输出:555555444444...111111我现在是怎么做的:我已经实现

c++ - STL vector : Moving all elements of a vector

我有两个STLvectorA和B,我想清除A的所有元素并移动的所有元素>B到A然后清除B。简单地说,我想这样做:std::vectorA;std::vectorB;....A=B;B.clear();由于B可能很长,因此需要k*O(N)来执行此操作,其中k是一个常量,N是max(size_of(A),size_of(B))。我想知道是否有更有效的方法来做到这一点。我能想到的一件事是将A和B定义为指针,然后在恒定时间内复制指针并清除B。 最佳答案 使用C++11,就这么简单:A=std::move(B);现在A包含以前由B持有的元素,

c++ - "Proper"用 C++/STL 存储二进制数据的方式

一般来说,在C++中存储二进制数据的最佳方式是什么?据我所知,这些选项几乎可以归结为使用字符串或vector。(我将省略char*s和malloc()s的可能性,因为我专门指的是C++)。通常我只使用一个字符串,但是我不确定是否缺少开销,或者STL在内部进行的转换可能会破坏二进制数据的完整性。有没有人对此有任何指示(har)?以一种或另一种方式提出建议或偏好? 最佳答案 char的vector很好,因为内存是连续的。因此,您可以将它与许多CAPI一起使用,例如berkley套接字或文件API。例如,您可以执行以下操作:std::ve

c++ - 为什么 C++ STL iostreams 不是 "exception friendly"?

我习惯了DelphiVCL框架,其中TStreams会在错误时抛出异常(例如,找不到文件,磁盘已满)。我正在移植一些代码以改用C++STL,并且已被iostreams捕获,默认情况下不抛出异常,而是设置badbit/failbitflags而是。两个问题...a:为什么会这样-对于从一开始就包含异常的语言来说,这似乎是一个奇怪的设计决定?b:如何最好地避免这种情况?我可以生成像我期望的那样抛出的shim类,但这感觉就像重新发明轮子。也许有一个BOOST库可以更明智地做到这一点? 最佳答案 C++从一开始就没有异常(exception

c++ - 使用 hash_map 时,在 STL 字符串上使用的最佳散列算法是什么?

我发现VS2005上的标准散列函数在尝试实现高性能查找时非常缓慢。有哪些快速高效的散列算法可以避免大多数冲突的好例子? 最佳答案 我曾与PaulLarson合作过微软研究院的一些哈希表实现。他在各种数据集上研究了许多字符串散列函数,发现简单的乘以101和加法循环的效果出奇的好。unsignedinthash(constchar*s,unsignedintseed=0){unsignedinthash=seed;while(*s){hash=hash*101+*s++;}returnhash;}

c++ - 使用 gdb 调试 C++ STL/Boost 的最佳实践

使用gdb调试,任何使用STL/boost的c++代码仍然是一场噩梦。任何使用过STL的gdb的人都知道这一点。例如,在代码here中查看一些调试session的示例运行。.我正在尝试通过收集提示来减轻痛苦。您能否评论一下我在下面收集的提示(特别是您一直在使用的提示以及您建议对它们进行的任何更改)-我列出的提示是技术性的降序。有人在用"StanfordGDBSTLutils"吗?和"UCFGDButils"?是否有一些用于boost数据结构的工具?上面的实用程序似乎不能递归使用,例如用于在一个命令中以清晰的方式打印boost::shared_ptr的vector。编写您的.gdbini

c++ - 什么 STL 算法可以确定容器中的一项是否满足谓词?

我需要一个STL算法,它接受一个谓词和一个集合,如果集合中只有一个成员满足谓词,则返回true,否则返回false。我将如何使用STL算法做到这一点?例如,用STL算法代码替换下面的代码来表达相同的返回值。intcount=0;for(autoitr=c.begin();itr!=c.end();++itr){if(predicate(*itr)){if(++count>1){break;}}}return1==count; 最佳答案 我想到了两件事:std::count_if然后将结果与1进行比较。为了避免在前两个元素已经匹配谓词