草庐IT

Union-Find

全部标签

c++ - union 中的 Shared_ptr

我想访问union的共享指针,尽管发生段错误:structunion_tmp{union_tmp(){}~union_tmp(){}union{inta;std::shared_ptr>ptr;};};intmain(){union_tmpb;std::shared_ptr>tmp(newstd::vector);b.ptr=tmp;//heresegmentationfaulthappensreturn0;}错误的原因是什么,我该如何避免? 最佳答案 您需要在union体中初始化std::shared_ptr:union_tmp(

c++ - 为什么 s.find 在失败时返回 string::npos 而不是 s.length()

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我最近很生气地发现string::find在大海捞针找不到时返回string::npos。这使得以下看似优雅的代码可以编译但抛出超出范围的异常:s.erase(s.find('#'));//eraseeverythingaftera#ifoneexists如果find在失败时返回s.length(),它会正常工作。相反,你必须做autopos=s.find('#');if(pos!=s.n

c++ - 为什么我的 union 规模比我预期的要大?

当我像这样打印union的大小时:unionu{charc[5];inti;}un;使用这个:int_tmain(intargc,_TCHAR*argv[]){printf("sizeofunion=%d",sizeof(un));return0;}我使用VisualC++得到的答案是8,但我预期是5。为什么?好吧,对于同一个例子,我做了这样的事情:inti1=0x98761234;un.i=i1;printf("\nun.c[0]=%x",un.c[0]);printf("\nun.c[1]=%x",un.c[1]);printf("\nun.c[2]=%x",un.c[2]);pr

c++ - 如何创建一个具有 32 位 int 和四个 8 位 char 类型的 union ,每个 char 类型都引用 32 位 int 的不同切片?

我想创建一个最大成员是32位整数的union。主要写到这里。然后是四个8位变量,可能是char类型,每个变量将引用32位整数的不同部分,例如:union{int32myint;charchar1[7:0];charchar2[15:8];charchar3[23:16];charchar4[31:24];}但我不确定如何在C++中执行此操作。 最佳答案 这可能有效:union{int32myint;charchars[4];}; 关于c++-如何创建一个具有32位int和四个8位char

c++ - 引用使用 Union

在工作中,我一直在使用linux和适用于C++11和C++14的GCC编译器。在一些工作代码中,我使用union来存储引用和指针,如下所示:(简化为仅重要部分)structMyStruct{//Stuffunion{double&x;double*x_ptr;};MyStruct(double&value):x(value){}//Morestuff};我相信这段代码清晰、可读、明确,并且提供了一种方便的方式来存储可以转移到其他内容的引用。它提供了易于理解的语法糖,在提高可读性的同时不影响性能。然而,当我尝试在visualstudio15中使用这样的代码时,由于“double&类型的非

c++ - 一份拷贝如何使用 memcpy union 简单成员?

我不太确定关于memcpy和union普通成员的标准引用。考虑代码:structTest{union{void(*function_p)(void*);void(*function_p_c)(constvoid*);};Test(constTest&other){usingstd::memcpy;memcpy(&function_p,&other.function_p,sizeof(function_p));//?memcpy(&function_p_c,&other.function_p_c,sizeof(function_p_c));//??}};intmain(void){Tes

c++ - 创建许多 boost::polygons 的 union 的最快方法是什么?

我必须合并许多boost::polgons,但我的方法似乎性能不佳(>15分钟),尤其是在有大量多边形(>2000)的情况下。我将我想要合并的所有多边形插入一个多边形,然后加入多边形,请参阅我的代码:BOOST_FOREACH(polygon,multipolygon){boost::geometry::clear(tmp_union);//tmp_unionisamultipolygonboost::geometry::union_(result,poly,tmp_union);result=tmp_union;}结果可能不会包含很多多边形,因为大多数要合并的多边形都会相交。有没有什

【Bug——Python】ERROR: Could not find a version that satisfies the requirement pip (from versions: none

目录一、项目场景二、问题描述三、原因分析三、解决方案四、总结一、项目场景pip报错二、问题描述今天在升级pip的时候发生了如下的报错问题:ERROR:Couldnotfindaversionthatsatisfiestherequirementpip(fromversions:none)ERROR:Nomatchingdistributionfoundforpip报错内容翻译:错误:找不到满足要求的版本pip(来自版本:none)错误:找不到与pip匹配的分发三、原因分析        我们经常通过pip安装东西时常常会出现ERROR:Couldnotfindaversionthatsatis

c++ - 不受限制的 union 是否需要放置新的和构造函数定义?

我看到的无限制union的例子似乎总是在构建时使用新的放置。有关C++11功能的维基百科文章在union的构造函数中使用了new放置。https://en.wikipedia.org/wiki/C%2B%2B11#Unrestricted_unions#include//Requiredforplacement'new'.structPoint{Point(){}Point(intx,inty):x_(x),y_(y){}intx_,y_;};unionU{intz;doublew;Pointp;//IllegalinC++03;legalinC++11.U(){new(&p)Poin

解决 node-gyp 错误问题,python not find,npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass相关问题

npmERR!codeELIFECYCLEnpmERR!errno1npmERR!node-sass这种情况因为node安装版本比较新,项目所需的node版本相对低导致的。参考:https://www.npmjs.com/package/node-sasshttps://nodejs.org/zh-cn/download/releases方法一:卸载新版本的node和npm,下载对应项目所需要的node,官网安装长期支持版LTS的node,会自动安装对应的npm版本。打开命令提示符或PowerShell。运行以下命令:npmuninstall-gnpm,这将卸载全局安装的npm软件包管理器。运