草庐IT

assign_attributes

全部标签

c++ - 是什么阻止了 __attribute__((packed)) 进入 ISO C/C++?

这是我在编写某些类的系统软件时使用C/C++的最重要原因之一,但它只不过是一个编译器扩展,恰好很常见。为什么委员会不考虑正式支持它?它是否与现有规范中的任何条款不兼容,例如Doespublicandprivatehaveanyinfluenceonthememorylayoutofanobject? 最佳答案 Whyisn'tthecommitteeconsideringtosupportitofficially?因为没有人提出。最接近这种提议的是N3986(PDF),它只适用于位域。commentsfromthediscussio

c++ - 匈牙利算法 : I'm having trouble with assigning as many jobs to workers as possible

我已经在C++中创建了匈牙利算法的实现。这种实现在很多情况下都非常有效。但是,在某些情况下,我的算法根本不起作用,因为我相信(并且确实如此)我对算法的一个步骤的实现是错误的。我的实现将数组X作为输入,运行算法的步骤并产生最终分配。该算法的步骤可以在维基上找到:HungarianAlgorithm在步骤3中,它具有以下成本数组(worker由行表示,作业由列表示)然后它说Initiallyassignasmanytasksaspossiblethendothefollowing但是我不明白什么是正确的实现。如何分配尽可能多的任务?选择会是随机的吗?然后如果选择是随机的,我可以选择第一个w

c++ - 在调用 vector::assign() 之前调用 vector::reserve() 会更好吗?

我知道使用“reserve”以避免不必要的重新分配是一种很好的做法(EffectiveSTL的第14项):std::vectorv1;v1.reserve(1000);for(inti=0;i当您调用assign时是否适用相同的规则?std::vectorv2;//v2.reserve(v1.size());//Bettertodothis?v2.assign(v1.begin(),v1.end()); 最佳答案 如果v1是std::vector你真的不需要它,因为编译器/STL知道在v2(并且将在复制实际数据之前保留本身所需的数量

c++ - 错误 : cannot convert 'const wchar_t [13]' to 'LPCSTR {aka const char*}' in assignment

//includethebasicwindowsheaderfile#include#include//theWindowProcfunctionprototypeLRESULTCALLBACKWindowProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam);//theentrypointforanyWindowsprogramintWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){//thehandleforthew

c++ - C++ 是否为纯虚拟类创建默认值 "Constructor/Destructor/Copy Constructor/Copy assignment operator"?

C++编译器是否为这个“类”生成默认函数,如Constructor/Destructor/Copy-Constructor...?classIMyInterface{virtualvoidMyInterfaceFunction()=0;}我的意思是不可能实例化这个“类”,所以我认为没有生成默认函数。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义析构函数virtual它将默认创建,而不是virtual。此外,我想知道为纯虚拟接口(interface)定义虚拟析构函数是否合理,如上所示?(所以这里没有使用指针或数据,所以不需要破坏任何东西)谢谢。 最

C++ 错误 : Incompatible types in assignment of ‘char*’ to ‘char [2]

我的构造函数有点问题。在我的头文件中,我声明:charshort_name_[2];和其他变量在我的构造函数中:Territory(std::stringname,charshort_name[2],Player*owner,charunits);voidsetShortName(char*short_name);inlineconstchar(&getShortName()const)[2]{returnshort_name_;}在我的cpp文件中:Territory::Territory(std::stringname,charshort_name[2],Player*owner,

c++ - C/C++ : is it faster to assign a 0 to an unsigned long variable or to xor the variable with itself?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我意识到差异可以忽略不计,但在尝试将unsignedlong清零时哪个更有效?unsignedlongx;...x=0;--OR--x^=x;泰勒

c++ - alignas 说明符 vs __attribute__(aligned),c++11

我目前正在使用C++11开发操作系统内核,我遇到了一个问题,我似乎无法找到自己的答案。目前我正在对齐我的分页结构,使用编译器特定的属性(例如gcc的__attribute__(aligned)),但是我想改用C++11alignas说明符,在Clang++这不是问题,因为它很乐意接受4096对齐作为alignas的参数,但是G++不接受!所以首先,alignasspecifier和gcc__attribute__(aligned)之间的主要区别是什么,显然两者都确保与特定值对齐,但是gcc中的alignas说明符似乎有128的限制,而属性似乎几乎没有限制,这是为什么?另外,为什么不能将

c++ - 是否有 C++11/14 替代 __attribute__((packed))

C++11引入了标准化属性语法的概念。我找不到所有受支持属性的列表。是否有C++11属性替代__attribute__((packed))?例如struct__attribute__((packed))Pack{uint8_tfield1;uint8_tfield2;}; 最佳答案 不幸的是,没有。标准当前定义的属性是:[[noreturn]];[[carries_dependency]];[[deprecated]]/[[deprecated(reason)]];其他一切都是实现定义的。

c++ - 在没有分配器的情况下在容器中遵守传播_on_copy_assignment 的习语

假设您有一个Container,它在内部使用其他标准容器来形成更复杂的数据结构。值得庆幸的是,标准容器已经被设计为完成所有必要的工作,以确保分配器被复制/分配等。所以,通常如果我们有一些容器c,并且在内部它有一个std::vector,我们可以写一个复制赋值运算符,它只是说:Container&operator=(constContainer&c){m_vec=c.m_vec;return*this;}事实上,我们甚至不必写它(因为它只是默认的复制赋值运算符所做的),但让我们说在这种情况下,默认运算符不会执行一些额外的必需逻辑:Container&operator=(constCont