草庐IT

stl_algobase

全部标签

c++ - C 等价于 C++ STL

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:StandarddatastructurelibraryinC?C是否有任何类似于C++STL的数据结构实现?特别是关联容器、HashMap或任何其他具有近似恒定时间检索的结构?谢谢! 最佳答案 C不能拥有STL的“完全等价物”,因为C没有模板或类。您可能对“Glib合集”库感兴趣:http://www.ibm.com/developerworks/linux/tutorials/l-glib/GnomeGlib:http://developer.gnom

c++ - STL Map 是否自动初始化值?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:WhydoesaclassusedasavalueinaSTLmapneedadefaultconstructorin…?当我使用map时,值肯定会被初始化为默认值还是我不应该依赖这个?例如,假设我有以下代码:mapmyMap;cout这将使用我的编译器输出“0”。这是有保证的行为吗?这可能不会总是初始化为0? 最佳答案 标准:ISO/IEC14882§23.4.4.3T&operator[](constkey_type&x);Effects:Ifther

c++ - 从微软的 STL 切换到 STLport

我在Windows下的性能关键C++代码中使用了相当多的STL。获得一些额外性能的一种可能的“廉价”方法是更改​​为更快的STL库。据此postSTLport速度更快,使用的内存更少,但它已经有几年历史了。最近有没有人进行过此更改,您的结果如何? 最佳答案 我没有将STLPort的性能与MSCVC进行比较,但如果存在显着差异,我会感到惊讶。(当然在Release模式下-调试版本可能会完全不同。)不幸的是,您提供的链接-以及我见过的任何其他比较-细节太少而无用。在考虑更改标准库提供程序之前,我建议您仔segmentation析您的代码

c++ - 将 Qt 与 STL 和 Boost 混合使用 - 是否有任何桥梁可以让它变得简单?

是否有任何桥梁可以使Qt与STL和Boost的混合尽可能无缝和容易?这是MixingQtandBoost的后续内容,但没有给出具体的解决方法。 最佳答案 您需要哪些桥梁?您可以将所有Qt容器类与标准算法一起使用。大多数时候我更喜欢Qt容器类,因为我确信它们使用写时复制习语(恒定时间操作)。Qt的foreach函数会创建容器的拷贝,因此您可以确定它是一个恒定时间操作,这很好。如果Qt信号槽机制变慢,您可以切换到boost替代方案。Qt信号/槽的伟大之处在于两个线程之间的信号/槽连接。QtConcurrent与BOOST.Lambda配

c++ - STL C++ 中的结束迭代器是什么?

任何人都可以解释一下past-the-end是什么意思。为什么我们在结束时调用end()函数? 最佳答案 begin()和end()函数定义了一个半开范围([begin,end)),意思是:该范围包括第一个元素但不包括最后一个元素。因此,名称超过了结尾。半开范围的优点是:它避免了对空范围的特殊处理。对于空范围,begin()等于end().它使遍历元素的循环的结束标准变得简单:循环简单只要未达到end()就继续 关于c++-STLC++中的结束迭代器是什么?,我们在StackOverfl

c++ - 如何读写 STL C++ 字符串?

#include...stringin;//HowdoIstoreastringfromstdintoin?////gets(in)-16cannotconvert`std::string'to`char*'forargument`1'to//char*gets(char*)'////scanf("%s",in)alsogivessomeweirderror同样,如何将in写入标准输出或文件?? 最佳答案 您正在尝试将C风格的I/O与C++类型混合。使用C++时,您应该使用std::cin和std::cout用于控制台输入和输出的流

c++ - STL 的 multimap 如何插入尊重排序?

我有一些带有整数索引的数据。我不断生成新数据,这些新数据需要添加到我拥有的数据集合中,按该索引排序,同时我希望能够轻松地开始数据并遍历它。这听起来std::multimap正是我所需要的。但是,我还需要按照插入顺序保存具有相同索引的数据,在这种情况下,这意味着当我遍历数据时,我会先获取较早的数据,然后再获取较晚的数据。multimap会这样做吗?我没有找到任何保证是这种情况。在sgi手册中,我没有看到任何提及是否。我在gcc4.3.4实现上进行了尝试,对于一些有限的测试用例似乎是正确的,但我当然想知道标准是否要求这样做,我可以依赖这个事实。编辑:为了更清楚地回应一些答案,我希望数据首先

c++ - STL Vector 是否调用了未分配对象的析构函数?

以下代码显示了预期之外的输出:classtest{public:test(){std::coutv;testt;v.push_back(t);returnEXIT_SUCCESS;}执行时显示:Created-1077942161Destroyed-1077942161Destroyed674242816我认为第二个“Destroyed”输出不应该存在。当我不使用vector时,结果是一条Created和一条Destroyed线,正如预期的那样。这种行为正常吗?(这是在FreeBSD系统上使用GCC编译的) 最佳答案 一切都应该如此

c++ - STL 算法中的 begin()、end() 烦恼

我喜欢STL算法,并且更喜欢使用算法而不是通常的循环。几乎所有的STL算法通常都被用作:std::algorithm_name(container.begin(),container.end(),.....)container.begin(),container.end()-是我的项目中最流行的词对之一。有人遇到同样的问题吗?请问各位大神是怎么解决这个问题的?你有什么建议来避免这种重复?我看到了几种解决方法,但它们都有不同的限制(宏用法,与通常的指针不兼容等)。 最佳答案 下一个C++标准C++0X(其中X代表,希望是9)将增加从迭

c++ - 如何在 C++11 (STL) 中创建一个压缩两个元组的函数?

我最近遇到了这个难题,终于能够找到一个hacky答案(使用索引数组),并想分享它(答案如下)。我确信有使用模板递归的答案和使用boost的答案;如果您有兴趣,请分享其他方法来做到这一点。我认为将这些全部放在一个地方可能会使其他人受益,并且对于学习一些很酷的C++11模板元编程技巧很有用。问题:给定两个长度相等的元组:autotup1=std::make_tuple(1,'b',-10);autotup2=std::make_tuple(2.5,2,std::string("evenstrings?!"));如何创建将两个元组“压缩”成对的异构元组的函数?std::tuple,std::