草庐IT

index-pack

全部标签

c++ - 关于 C++ Boost 图创建和 vertex_index 属性。

我是boost菜鸟。我想知道为什么以下代码编译失败。我正在创建一组顶点,并尝试分配我自己的顶点索引和顶点名称。(我正在关注此页面:http://fireflyblue.blogspot.com/2008/01/boost-graph-library.html。)我知道Boost中的vertS顶点列表不需要显式创建顶点ID,而且我还在Stackoverflow(howprovideavertex_indexpropertyformygraph)中看到了这个非常相关的问题讨论如何使用associative_property_map分配顶点索引。以下虽然-获取vertex_index映射,并

c++ - sizeof pragma packed bitfield struct 数组

我将VisualStudio2013用于x64系统。我有以下结构:#pragmapack(1)structTimeStruct{intmilliseconds:10;BYTEseconds:6;BYTEminutes:6;BYTEhour:5;BYTEday:5;};#pragmapack()和一个数组:TimeStructstArray[10];当我使用sizeof(stArray);时,我得到80而不是40。我需要知道问题是编译器没有正确打包还是sizeof没有考虑位域的实际大小。谢谢 最佳答案 参见WhatisVC++doin

c++ - `pragma pack(push, 1)` 在 GCC 4.4.7 中崩溃。可能的编译器错误?

我遇到了一个让我难过的错误。我已将其缩小为GCC(特别是RHELLinux,GCCv.4.4.7)中的pragmapack命令的问题,可以在下面显示的小示例案例中重新创建该问题。看起来GCC在这种情况下计算了错误的偏移量,这将表现为循环内的崩溃。删除pragmapack也可以消除错误-但在实际应用程序中,这将导致使用许多额外的千兆字节内存,这是不可取的。在下面的示例中,您需要在启用优化(O3)的情况下进行编译才能体验失败。我还在结构中提供了一个示例项(cMagic),可以将其删除,这将更改结构对齐方式并防止错误触发。我查看了生成的程序集,认为这可能是一个编译器错误。我还缺少其他东西吗?

c++ - 从 boost multi_index 数组中 move 元素

假设我有可move且不可复制的对象,并且我有带有random_access索引的boost多索引数组。我需要将我的对象移出数组前端,但我找不到任何方法可以在documentation中给我右值/左值引用.我只能看到front()给我不断的引用和pop_front()删除元素,但不返回任何东西。那么有没有办法将元素移出boostmulti-index呢? 最佳答案 添加到@sehe的回答中,下面显示了在您的可move类型不可默认构造的情况下如何修改代码:已编辑:更改代码以正确处理*extracted的破坏。已编辑:添加了std::un

c++ - std::type_index 跨 DLL 是否安全

假设我有一个主DLL,其中有一个这样的类:classTest{public:typedefstd::unordered_mapMap;templatevoidSetValue(intval){SetValue(std::type_index(typeid(T)),val);}templateintGetValue(){returnGetValue(std::type_index(typeid(T)));}protected://Definedin.cppfilevoidSetValue(conststd::type_index&idx,intval){m_Map[idx]=val;}/

c++ - 从 sdl 调色板表面创建 OpenGL 纹理 (SDL_PIXELFORMAT_INDEX8)

我创建了一个bmp并使用SDL_LoadBMP加载它检查生成的SDL_Surface时,我可以看到它的格式为SDL_PIXELFORMAT_INDEX8。我想使用SDL表面使用glTexImage2D生成纹理.通常我只能检查表面接近于此的东西:SDL_Surface*surface=SDL_LoadBMP(filename.c_str());GLenummode=0;Uint8bpp=surface->format->BytesPerPixel;Uint32rm=surface->format->Rmask;if(bpp==3&&rm==0x000000ff)mode=GL_RGB;i

c++ - 可变参数模板 : Pass parameter pack without expansion

旧的Cstdio工具提供了一种使用vprintf工具传递可变参数集的方法。是否有类似的方式来传递C++0x可变模板参数包而不扩展它?如果您有一个采用可变参数模板参数包的派生类构造函数,并且需要简单地将其传递给基类构造函数,而不是将其解包,这可能会很有用。例如:templateBase::Base(constT&v,constArgs&...args){/*...expandargshere....*/}templateDerived::Derived(constT&v,constArgs&...args):Base(v,args){/*...don'texpandargs...*/}我

c++ - 如何在 Boost multi_index 复合键中删除?

我正在检查这个Boostmulti_indexcompositekeysusingMEM_FUN谁能告诉我如何为这个例子实现删除功能?现在我在做Name_set_by_last::iteratormitchells=names.get().find("mitchell");names.erase(mitchells);//showserror 最佳答案 names.get().erase(mitchells); 关于c++-如何在Boostmulti_index复合键中删除?,我们在St

c++ - "Packing"结构对性能有何影响

开始微优化并不是我的目标,所以如果这就是结果,我会很乐意放弃这个问题。但我即将开始做出一些设计决策,并希望了解更多信息。我正在读取和处理一种文件格式,其中包含大量以定义明确的格式记录的数据结构。我在代码中将它们表示为结构。现在,如果我用#pragmapack(1)将结构打包成一个1字节对齐,我可以从IO流中直接读取结构到结构指针。这很方便。如果我不打包结构,我可以一个一个地fread字段或一次freadblock然后reinterpret_cast结构字段一个接一个,这可能会很快变老。作为引用,这些结构将(可能)被成千上万的人读取,并且可以对它们进行一些数字运算。它们主要由无符号16位

Keil MDK 6(VS Code插件Arm Keil Studio Pack配置及使用)

文章目录前言一、ArmKeilStudioPack是什么?二、安装及配置过程1.所需工具2.安装过程3.安装插件4.克隆vcpkg[可选]三、验证1.生成工程2.更改arm版本3.转化工程4.配置vcpkg环境5.编译问题参考总结前言在b站中看到了KeilMDK6介绍的相关视频,结合自己的实际操作,写一下配置和使用方法,如有错误可在评论区指出一、ArmKeilStudioPack是什么?ArmKeilStudioPack是keil官方发布的VSCode插件,以实现KeilStudioforVSCode的使用keilMDKV6可以在windows、mac、linux上运行,本文只讲述window