草庐IT

stl-algorithm

全部标签

c++ - 在 Windbg 中调试 C++ STL 容器

Windbg粉丝声称它非常强大,我倾向于同意。但是当涉及到调试STL容器时,我总是卡住了。如果变量在堆栈上,则!stl扩展有时会解决这个问题,但是当具有复杂类型(例如std::vector>)的容器位于堆上或某些其他结构的一部分时,我只是不知道如何查看其内容。感谢任何提示、指示。 最佳答案 我经常发现调试器对STL数据类型的支持不足。出于这个原因,我越来越多地使用loggingframeworksandloggingstatements.我曾经认为这些是为那些不能使用调试器的人准备的,但我现在意识到它们提供了真正的值(value)。

c++ - 是否有一个分配器使用 alloca 并且在其他方​​面与 C++ STL 兼容?

我有两个问题:1)是否有可能实现一个分配器,它使用alloca在堆栈上分配内存并且在其他方​​面与C++STL兼容?如果那里有代码,您只需将URL指向我就可以让我高兴。:-)如果那里没有代码,也许您可​​以勾勒出分配和解除分配的函数?2)如果上述问题的答案是"is",我想了解如何在堆栈上为类成员分配内存。例如,考虑一个std::vector>并假设调用此vector的成员函数“resize”首先调用分配器的“deallocate”,然后调用“allocate”。调用allocate的范围是成员函数resize的范围。这是否意味着分配的内存在该函数调用结束时从堆栈中删除?亲切的问候,比约

c++ - 为什么我应该使用 Apache C++ 标准库而不是任何其他 STL 实现以及 Boost?

我从ApacheC++standardlibrary中得到什么好处?我不是从编译器和Boost库附带的STL实现中得到的? 最佳答案 TheApacheC++StandardLibraryprojectisacompleteimplementationoftheISO/IEC14882C++StandardLibrary.ThemostdistinguishingcharacteristicofthisimplementationoftheC++StandardLibraryisitsportabilitytoalargenumbe

c++ - C++ 中的哈希表与 STL 映射

我正在尝试学习C++映射。只是想知道STLmap的实现。我读到它使用二叉搜索树。在STL中有哈希表的实现吗?STLmap究竟是如何存储键值对的? 最佳答案 典型的STL实现基于红黑树。C++TR1提供了使用哈希表实现的std::tr1::unordered_map。Boost还提供了一个unordered_map哈希表实现。C++11现在有std::unordered_map 关于c++-C++中的哈希表与STL映射,我们在StackOverflow上找到一个类似的问题:

c++ - OpenMP 和 STL 风格的

我正在尝试将我的程序与openMP并行化。该程序大量使用STL迭代器。是saidopenMP3.0可以处理这个问题:std::vectorN(2*N_max+1);std::vector::const_iteratorn,m;#pragmaompparallelforfor(n=N.begin();n!=N.end();++n){//Tasktobeinparallel};但是我得到了以下错误:error:invalidcontrollingpredicate我使用的是gcc4.5.0(在4.4.0中实现的openMP3),我的构建字符串是:g++-O0-g3-Wall-c-fmess

Android 标准和 STL 支持

我正在玩androidndk。我正在使用带有cygwin(最新版本)的WindowVista。我在手机上编译并启动了helloworldjni示例。这是工作。代码是(是一个.cpp文件):#include#includeextern"C"{JNIEXPORTjstringJNICALLJava_org_android_helloworld_HelloworldActivity_invokeNativeFunction(JNIEnv*env,jobjectjavaThis);};jstringJava_org_android_helloworld_HelloworldActivity_i

c++ - STL 排序是使用交换还是二进制复制?

我很难找到一个好的答案。出于某种原因,我认为STL排序将使用交换来实现,以更好地支持复杂类型,但当我最终深入研究代码时,它似乎实际上是在执行二进制拷贝。有人可以证实这一点吗?我想二进制拷贝实际上比交换更可取。附带问题:是否有使用交换实现的任何STL算法或容器操作?(显然在std::swap之外。)我想知道什么时候为复杂类型实现我自己的交换是谨慎的。编辑:我问你的原因是你是否有类似的东西:classMyClass{vectorvec_data;inta;intb;}vectormy_vec;sort(my_vec.begin(),my_vec.end(),MyCustomCompare)

c++ - 为 STL 排序算法定义 < - 运算符重载、仿函数或独立函数?

我有一个包含Widget类对象的STL::list。它们需要根据Widget类中的两个成员进行排序。为了排序工作,必须定义一个比较两个Widget对象的小于比较器。似乎有无数种方法可以做到这一点。据我所知,可以:一个。在类中定义一个比较运算符重载:boolWidget::operator定义一个采用两个小部件的独立函数:booloperator然后让Widget类成为它的友元:classWidget{//Variousclassdefinitions...friendbooloperator定义一个仿函数,然后在调用排序函数时将其作为参数包含在内:classWidget_Less:pu

c++ - 使用 STL 从 map<T,Z> 的键填充 vector<T>

mapm=...;vectorv;v.reserve(m.size);for(map::iteratorit=m.begin();it!=m.end();++it){v.push_back(it->first);}是否有使用某些STL函数的更好的1行版本?编辑:不使用c++11! 最佳答案 可移植:structSelectKey{templateFoperator()(conststd::pair&x)const{returnx.first;}};std::transform(m.cbegin(),m.cend(),std::bac

c++ - 希望在 STL vector 中找到 C++ STL vector

我正在尝试查看vectorv1是否包含在vectorv2中。我的vector是有序的,需要保留顺序。例如,如果v1=(a,b)并且v2=(e,f,a,b),我想在v2中得到一个指向a的迭代器。STLfind只能在vector中找到一个对象。我想我想要的是类似于string::find的东西。STL中有没有函数可以做到这一点? 最佳答案 看起来您想在另一个序列中搜索子序列。你可以用std::search做到这一点来自标准库。autoit=std::search(v2.begin(),v2.end(),v1.begin(),v1.end