草庐IT

point_list

全部标签

c++ - 为什么在这个 'handmade list' 中使用指向指针的指针?

我们在学校有一个项目,尽管该项目是关于什么的,但它涉及使用具有这种特定结构的链表:typedefstruct_node{intcontents;_node*next_node;}*node;在项目之前,我们被分配了一堆函数来学习使用列表(将节点推到列表的前面或后面,计算节点数量,搜索特定节点等)。其实并没有那么难,但是当老师发来基础工程的时候(这样我们每个人都从同一个地方开始),所有的函数都涉及传递一个*node引用。例如:resultTypefunctionName(node*list,...){...}我在项目之前用void函数完成了所有列表函数,因为,至少据我所知,我们正在使用指

c++ - 数组与 std::initializer_list 作为函数参数

我可以通过两种方式编写一个将临时数组(例如{1,2,3})作为参数的函数://usingarraytemplateautofoo1(constT(&t)[N])->void;//usingstd::initializer_listtemplateautofoo2(std::initializer_listt)->void;是否有任何指南可以告诉您哪个更好? 最佳答案 它们是完全不同的东西。还有2或3个其他选择是合理的。templatevoidfoo_a(std::arrayconst&);templatevoidfoo_b(gsl:

c++ - timer_create 给出内存泄漏问题 "Syscall param timer_create(evp) points to uninitialised byte(s)"

structsigeventtimerEvent;memset(&timerEvent,0,sizeof(timerEvent));timerEvent.sigev_value.sival_int=0;timerEvent.sigev_value.sival_ptr=diaBase;timerEvent.sigev_notify=SIGEV_THREAD;timerEvent._sigev_un._sigev_thread._function=function;timerEvent._sigev_un._sigev_thread._attribute=NULL;timer_ttimer

c++ - `List x;` 和 `List x()` 有区别吗

标题来自名站C++FAQ作者:编码(marshal)·克莱恩。作者声称以下两个代码示例之间存在差异。SupposethatLististhenameofsomeclass.Thenfunctionf()declaresalocalListobjectcalledx:voidf(){Listx;//Localobjectnamedx(ofclassList)...}Butfunctiong()declaresafunctioncalledx()thatreturnsaList:voidg(){Listx();//Functionnamedx(thatreturnsaList)...}但是

c++ - 错误 : no instance of overloaded function "std::make_shared" matches the argument list

查看ApreviousstackQuestionstd:make_sharedvsstd::shared_ptr,我试图在一个uni项目中实现它。这是之前的“问题”:Ican'tthinkofanysituationwherestd::shared_ptrobj(newObject("foo",1));wouldbepreferredtoautoobj=std::make_shared("foo",1);因此我采用了这段代码:std::shared_ptrpT1(newTriangle(pCanvas,30,30,30,60,60,30,255,0,0));并将其修改为这段代码:aut

c++ - std::list<int> 的默认构造函数可以抛出吗?

我(快速)查看了C++标准和在线C++引用,但找不到这个简单问题的答案:可以std::list的默认构造函数吗?扔?如果是这样,为什么会抛出? 最佳答案 简短回答:它可以,但它可以以相当安全的方式实现:默认构造函数构造了一个空列表,因此几乎不需要在进程中实际分配内存。大多数列表实现不会为空列表分配任何内存。但是,默认构造函数不是真正默认构造函数,因为它有一个默认参数:explicitlist(constAllocator&=Allocator());Allocator本身是一个模板参数,因此如果Allocator有一个足够笨(或复杂

c++ - 使用 std::stack 而不是 deque、vector 或 list 的优点和缺点是什么

我正在编写一个非常简单的std::stack,使用vector作为其底层容器。我意识到我可以用vector容器的push_back()、pop_back()和back()替换所有的push()、pop()和top()函数。我的问题是:当底层容器的受控使用就足够时,为什么还要使用容器适配器?为什么不只使用双端队列、vector或列表?会不会浪费内存或处理时间? 最佳答案 当您的代码显示std::stack时,读者很清楚他们需要在容器上执行哪些操作……它在强制不使用其他操作的同时进行通信和记录。它可以帮助他们快速形成对代码中算法逻辑的印

c++ - C++向chrono::system_clock::time_point添加月份

如何将chrono::system_clock::time_point值加数月?谢谢! 最佳答案 概述这是一个非常有趣的问题,有几个答案。“正确”的答案是您必须针对特定应用程序决定的。使用月份,您可以选择按时间顺序进行计算或进行日历计算。按时间顺序的计算处理时间点和持续时间的常规单位,例如小时,分钟和秒。日历计算处理不规则的日历,该日历主要用来给日子起令人难忘的名字。年表计算如果问题是关于future几个月的物理过程,那么物理学并不关心不同的月份有不同的长度,因此按时间顺序计算就足够了:婴儿要在9个月内到期。从现在开始的6个月后,这

c++ - 来自 Voronoi 的 Delaunay boost : missing triangle with non-integral point coordinates

遵循这两个资源:BoostbasictutorialSOQuestion我用boost写了一个Delaunay三角剖分。如果点坐标是完整的(我生成了几个随机测试并且我没有观察到错误),它工作正常。但是,如果这些点不是整数,我会发现许多不正确的三角剖分缺少边缘或错误的边缘。例如这张图片是用四舍五入的值构建的并且是正确的(见下面的代码)但是这个图像是用原始值构建的并且是不正确的(见下面的代码)这段代码重现了这两个例子(没有显示)。#includeusingboost::polygon::voronoi_builder;usingboost::polygon::voronoi_diagram

c++ - 为什么我不能将此对象推送到我的 std::list 中?

刚开始用C++编程。我创建了一个Point类、一个std::list和一个迭代器,如下所示:classPoint{public:intx,y;Point(intx1,inty1){x=x1;y=y1;}};std::listpointList;std::list::iteratoriter;然后我将新点推送到pointList。现在,我需要遍历pointList中的所有点,所以我需要使用迭代器进行循环。这就是我搞砸的地方。for(iter=pointList.begin();iter!=pointList.end();iter++){PointcurrentPoint=*iter;gl