草庐IT

stl-algorithm

全部标签

【C++练级之路】【Lv.8】【STL】list类的模拟实现

快乐的流畅:个人主页个人专栏:《C语言》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录引言一、结点二、迭代器2.1成员变量与默认成员函数2.2operator*2.3operator->2.4operator++2.5operator--2.6relationaloperators三、list3.1成员变量3.2迭代器3.2.1begin3.2.2end3.3默认成员函数3.3.1constructor3.3.2destructor3.3.3copyconstructor3.3.4operator=3.4修改3.4.1insert3.4.2push_front3.4

c++ - STL复制功能的实现?

以下是std::copy函数的一些实现细节(来自vs2015):templateinline_OutIt_Copy_impl(_InIt_First,_InIt_Last,_OutIt_Dest,_Scalar_ptr_iterator_tag){//copy[_First,_Last)to[_Dest,...),pointerstoscalarsptrdiff_t_Count=_Last-_First;_CSTDmemmove(&*_Dest,&*_First,_Count*sizeof(*_First));return(_Dest+_Count);}似乎我们可以在标量类型的情况下使

c++打包和解包参数包以在没有STL的情况下调用匹配的函数指针

我正在尝试创建一个类,该类将存储指向具有可变数量参数的函数的指针,并在稍后调用它。想法是为函数创建一个包装器,该函数将在对象析构时调用所述函数。这样我就可以确保在退出某些功能后进行一些清理。我现在拥有的是FaheemMitha发布的一点修改代码here.这是带有示例的工作代码(我正在使用VisualStudio2015编译它):#include"stdafx.h"#include#includeusingnamespacestd;templatestructseq{};templatestructgens:gens{};templatestructgens{typedefseqtype

c++ - STL 表示隐含交叉引用的数据结构的方法

我经常遇到以下情况。(不失一般性:我在下面的例子中使用了两个容器的最简单的可能情况,但是在几何算法的实现中,需要大量的容器来描述互连的图形数据结构。)我有两种数据类型的大量值A和B相互引用(通常不是一对一),例如,首先通过(native)指针或引用。它们都被放置在容器中usingCA=std::container1;和usingCB=std::container2;.某些函数的结果是一对CA和CB实例。具有CA的元素实例我想删除CB中的引用元素反之亦然。structA;structB;usingCA=std::container1;usingCB=std::container2;我想定

C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

PeterHart NilsNilsson BertramRaphael 参考:C#,人工智能(AI)机器人路径规划(PathPlanning)的ARA*(AnytimeReplanningA*Algorithm)算法与源程序https://blog.csdn.net/beijinghorn/article/details/125464754一、A*算法概述A*算法最初由斯坦福研究院(StanfordInstitute)的 PeterHart,NilsNilsson,BertramRaphael 发表于1968年,属于Dijkstra算法的拓展之一。论文原文https://www.cs.auc

c++ - 将一个 STL vector 高效地分配给另一个 STL vector (WSL 问题)

我对完成STLvector分配的时间有疑问。上下文是:我正在将二进制文件读入std::vector像这样:std::vectorread_file(conststd::string&file_path){std::ifstreamstream(file_path);if(!stream.good()){std::cout();}stream.seekg(0,std::ios_base::end);autosize=stream.tellg();stream.seekg(0,std::ios_base::beg);std::vectorvalues(size/sizeof(float))

c++ - 使用带有 valarray 的 C++ 标准库算法

我试图避免重新实现我自己笨拙的标准算法版本,因此我正在使用标准库版本。由于我不是C++专家,因此我谨慎行事并打开了完整的调试选项。具体来说,我在valarray容器上使用二进制搜索。下面的代码块似乎产生了正确的结果,并且valgrind没有提示。不过,我确实觉得我处在一个滑坡上,因为我不确定我正在做的事情是否真的被允许,或者我只是被编译器放走了。有代表性的一段代码:#include#include#include#includeusingnamespacestd;intmain(){valarrayv(10);for(inti=0;i问题:我在这里做的事情真的合法吗?两个指向doubl

c++ - 以一种类似 STL 的方式检查一个范围是否是另一个范围的子范围

假设我们有两个范围r1=[first1,last1)和r2=[first2,last2)假设r2是r1的子范围,当且仅当存在这样的i>=0那个[first1+i,first1+i+last2-first2)是一个有效范围对于[0,last2-first2)中的所有j,以下成立:*(first1+i+j)==*(first2+j)嵌套循环可以很容易地确定r2是否是r1的子范围,甚至可以通过嵌套调用std::equal来确定一个循环>模板。有没有更像STL的简洁方法来用C++表达相同的想法?C++0x解决方案也很受欢迎。提前致谢。 最佳答案

c++ - 在进程之间移动 STL 对象

我知道这很奇怪,但我只是玩得开心。我正在尝试传输std::map(在固定内存区域中使用placementnew实例化)通过两台机器之间的套接字在两个进程之间:Master和Slave.我正在使用的map有这个typedef://AvectorofPageobjectstypedefstd::vector>PageVectorType;//Amappingofbinary'ipaddress'toaPageVectortypedefstd::map,PageTableAllocator>>PageTableType;PageTableAllocator类负责将STL容器可能想要/需要的任

C++ : How can I calculate a cost of a method (Algorithm Analysis)

我是C++初学者,正在学习算法分析:我正在编写一个方法,该方法返回一个二维数组的行号最多为1,输入数组中的每一行都已排序,并且当所有1都排序到前面时命中0,如1,1,1,0,01,1,0,0,01,1,1,1,01,0,0,0,01,1,1,1,1该方法将从该数组返回5,代码如下:intcountone(inta[][]){intcount=0,column=0,row=0,current=0,max;boolend=true;do{if(a[row][column]==1){current++;column++;}if(a[row][column]==0){column=0;if(c