草庐IT

stl-algorithm

全部标签

c++ - 将项目推送到 STL 容器后出现段错误

typedefstructtemp{inta,b;char*c;temp(){c=(char*)malloc(10);};~temp(){free(c);};}temp;intmain(){tempa;listl1;l1.push_back(a);l1.clear();return0;}给出段错误。 最佳答案 你没有复制构造函数。当您将“a”插入列表时,它会被复制。因为你没有复制构造函数(为c分配内存并从旧c复制到新c)c是a中的相同指针和列表中a的拷贝。两个a的析构函数都被调用,第一个会成功,第二个会失败,因为c指向的内存已经被释

algorithm - 3D 中点 A 是否靠近点 B - 距离检查

我正在寻找一种有效的算法来检查一个点是否在3D中的另一个点附近。sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)这似乎并不太快,实际上我不需要这么大的精度。我还能怎么做? 最佳答案 对距离求平方,并放弃对sqrt()的调用,这样会快得多:(((x2-x1)^2+(y2-y1)^2+(z2-z1)^2当然,在许多情况下,至少可以提前计算出radius*radius并存储为例如squaredRadius。 关于algorithm-3D中点A是否靠近点B-距离检查,我们在

c++ - 为什么宏 __STL_FUNCTION_TMPL_PARTIAL_ORDER 应该将模板函数包含在 std_pair.h 中

今天在STL_pair.h中看到如下代码:#ifdef__STL_FUNCTION_TMPL_PARTIAL_ORDERtemplateinlinebooloperator!=(constpair&__x,constpair&__y){return!(__x==__y);}templateinlinebooloperator>(constpair&__x,constpair&__y){return__y我不认为模板函数与偏特化有任何关联的功能模板。我错了吗? 最佳答案 编译器如何处理函数调用在C++中调用函数模板经历了名称查找(标准

c++ - 序列化结构的 STL 映射

我正在尝试序列化一个STL映射,其中键和值是结构。当键是一个结构并且值是一个int时,附加的代码工作正常。但是,我在设置序列化函数来处理结构值时遇到问题。有关如何执行此操作的任何建议?非常感谢-安德鲁。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;structportfolio_data{doublea;};st

c++ - std::nth_element 的 SIMD 实现

我有一个算法可以在我的双核3GHzIntel处理器上平均运行250毫秒,我正在尝试优化它。目前,我有一个std::nth_element在std::vector上调用了大约6,000次的调用s在150到300个元素之间,平均耗时50毫秒。我花了一些时间优化我使用的比较器,它目前查找两个doubles来自vector并执行简单的比较。比较器运行时间的一小部分可以忽略不计std::nth_element.比较器的复制构造函数也很简单。因为这个调用目前占用了我算法20%的时间,而且大部分时间花在了nth_element的代码上。我没有写(即不是比较器),我想知道是否有人知道优化nth_ele

C++/LLVM : Runtime code generation and STL container

假设一个简单的部分评估场景:#include/*maybeknownatruntime*/intsomeConstant();/*canbepartiallyevaluated*/doublefoo(std::vectorargs){returnargs[someConstant()]*someConstant();}假设someConstant()是已知的并且在运行时不会改变(例如,由用户提供一次)并且可以被相应的int文字替换。如果foo是热路径的一部分,我预计会有显着的性能改进:/*partiallyevaluated,someConstant()==2*/doublefoo(s

c++ - valarray 上 STL 算法 "count"的返回类型是什么

我正在使用VisualStudio2010Pro在Windows764bit上机器,我想使用count(来自header)在valarray上:intmain(){valarrayv(false,10);for(inti(0);i上面程序的输出是正确的:4但是我想将值分配给变量并使用int导致编译器警告精度损失。自valarray没有迭代器,我不知道如何使用iterartor::difference_type.这有可能吗? 最佳答案 Num的正确类型会是:typenameiterator_traits::difference_typ

【C++】STL 算法 - 查找算法 ( 查找两个相邻重复元素 - adjacent_find 函数 | 有序容器中通过二分法查找指定元素 - binary_search 函数 )

文章目录一、查找两个相邻重复元素-adjacent_find函数1、函数原型分析2、代码示例二、有序容器中通过二分法查找指定元素-binary_search函数1、函数原型分析2、二分查找时间复杂度分析3、代码示例一、查找两个相邻重复元素-adjacent_find函数1、函数原型分析在C++语言的标准模板库(STL,STLStandardTemplateLibrary)中,提供了adjacent_find算法函数用于在容器中查找两个相邻的重复元素;如果找到两个相邻的重复元素,则返回指向这对元素的第一个元素的迭代器;如果没有找到两个相邻的重复元素,则返回指向序列末尾的迭代器;adjacent_

c++ - STL 无序容器的局部迭代器有哪些用途?

在C++标准§23.2.7无序关联容器[unord.req]中表91描述了STL无序关联容器必须满足的附加要求。在此表中,标准规定STL无序容器(即unordered_set、unordered_map、unordered_multiset和unordered_multimap)必须作为成员类型提供local_iterator和const_local_iterator.local_iterator是一个迭代器类型,其类别、值、差异、指针和引用类型与无序容器的iterator相同。此迭代器可用于迭代单个存储桶但不能跨存储桶。const_local_iterator是一个迭代器类型,其类别

蓝桥杯-常用STL(一)

常用STL🎈1.动态数组🎈2.vector的基础使用🔭2.1引入库🔭2.2构造一个动态数组🔭2.3插入元素🔭2.4获取长度并且访问元素🔭2.5修改元素🔭2.6删除元素🔭2.7清空🎈3.vector的基础应用🔭3.1例题一🎈4.用动态数组存储自定义数据🔭4.1二维的动态数组🎈1.动态数组🔎有些时候想开一个数组,但是却不知道要开多大长度的数组合适,因此我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。所谓动态数组,也就是不定长数组,数组的长度是可以根据我们的需要动态改变的。动态数组的实现也不难,但是C++里面有已经写好的标准模板库(StandardTemplateLibrary)