草庐IT

固定效应

全部标签

c++ - 标准 C++ 中是否有固定宽度的 bool 类型?

据我所知,bool类型的宽度是实现定义的。但是是否有任何固定宽度的boolean类型,或者我应该坚持使用,例如,uint8_t来表示固定宽度的bool?[编辑]我制作了这个自动生成C++类的python脚本,它可以保存我希望能够在微Controller和我的计算机之间发送的变量。它的工作方式是它还保留两个数组,其中包含一个指向这些变量中的每一个的指针以及每个变量的大小。这为我提供了必要的信息,可以轻松地序列化和反序列化这些变量中的每一个。但是,为了使其起作用,变量类型的sizeof、endianness等必须在两侧相同,因为我在两侧使用相同的生成代码。我不知道这是否会成为一个问题,但我

c# - 如何防止应用程序被固定在 Windows 7 中?

我试图阻止用户将我的.NET应用程序固定到任务栏。我在OldNewThing上找到了一些代码那就是那样。但是,它是在C++中。#include#include#includeHRESULTMarkWindowAsUnpinnable(HWNDhwnd){IPropertyStore*pps;HRESULThr=SHGetPropertyStoreForWindow(hwnd,IID_PPV_ARGS(&pps));if(SUCCEEDED(hr)){PROPVARIANTvar;var.vt=VT_BOOL;var.boolVal=VARIANT_TRUE;hr=pps->SetVal

c++ - 一个任务的线程数固定的 TBB,其他任务默认

我想在一组block上并行执行for循环(使用TBB),其中每个block都将使用用户提供的函数进行处理。通常,我会使用tbb::parallel_for()来执行此操作。由于各种原因,我希望能够将处理block的线程数限制在规定的数量,称之为j。通常,我会使用tbb::task_scheduler_init(j)执行此操作。但是,我希望用户可以选择使用TBB,特别是让用户提供的函数使用剩余的许多内核。所以我认为tbb::task_scheduler_init()已经过时了。我能看到的唯一解决方案是让用户调用tbb::task_scheduler_init()(或者一起忽略它),然后旋

c++ - 为什么这个可变参数模板参数的替换失败了? (在固定参数之前打包)

这是触发编译错误的最小示例:#includevoidfoo(int,double,int){}templatevoidpost_forwarder(void(*fun)(Args...,int),Args&&...aArgs){fun(std::forward(aArgs)...,5);}intmain(){post_forwarder(foo,6,6.1);//Compilationerroroninstantiationreturn0;}我怀疑问题与可变参数模板参数在固定int参数之前在函数类型中扩展的事实有关,但如果是这种情况,我找不到很好的理由。Clang3.6报错是:erro

c++ - 重载可变参数模板的固定参数

是否可以通过更改函数参数包之前的固定参数数量来覆盖可变参数模板?例如:#includetemplatevoidfoo(std::string,std::string,std::string,Args...){std::coutvoidfoo(std::string,std::string,Args...){std::cout运行它会导致调用第二个foo,但我希望调用第一个。有没有更好的方法重载这个函数? 最佳答案 选择第二个变体是因为它不涉及为最后一个参数创建std::string实例所需的额外转换。如果您显式调用类构造函数(或调整

c++ - 如何在不四舍五入的情况下在C++中显示固定数量的数字

我有这段代码(非常基本):#include#includeusingnamespacestd;intmain(){floata=0.0,b=0.0,c=0.0;cout>a;cout>b;cout当我输入两个数字(例如,a=513和b=791)时,我得到0.65。计算器显示正确答案是0.648。我知道我的代码将最后一个十进制数四舍五入,但这不是我想要的。我怎样才能让它保持在0.64而不是0.65? 最佳答案 如果您想将值截断到小数点后两位,可以将其乘以100,截断为整数,然后除以100,如下所示:c=a/b;c=floor(100*

C++ 固定大小数组与同一类型的多个对象

我想知道(除了明显的语法差异之外)拥有一个包含一个对象(相同类型)的多个实例的类或该类型的固定大小的对象数组之间是否会有任何效率差异。在代码中:structA{doublex;doubley;doublez;};structB{doublexvec[3];};实际上,我会使用boost::arrays,它是C风格数组的更好的C++替代品。我主要关心构造/析构和读/写这样的替身,因为这些类通常只是为了调用其中一个成员函数而构造一次。感谢您的帮助/建议。 最佳答案 通常这两个结构的表示完全相同。但是,如果您为您的用例选择了错误的,则性能

c# - 如何有效地包装固定大小的循环缓冲区的索引

我有一个固定大小的循环缓冲区(作为数组实现):初始化时,缓冲区会填充指定的最大数量的元素,这允许使用单个位置索引来跟踪我们当前的位置圆圈。访问循环缓冲区中元素的有效方法是什么?这是我目前的解决方案:intGetElement(intindex){if(index>=buffer_size||index=buffer_size?(index+end_index)-buffer_size:end_index+index;}returnbuffer[index];}一些定义:end_index是紧跟在圆圈中最后一个元素之后的元素的索引(它也被认为与start_index相同,即圆圈的第一个元

c++ - 是否可以重载一个可以从指针中分辨出固定数组的函数?

动机:几乎是为了好玩,我正在尝试编写一个函数重载,它可以区分参数是固定大小的数组还是指针。doubleconstd[]={1.,2.,3.};doublea;doubleconst*p=&a;f(d);//callarrayversionf(p);//callpointerversion我发现这特别困难,因为众所周知,数组迟早会衰减为指针。一个天真的方法是写voidf(doubleconst*c){...}templatevoidf(doubleconst(&a)[N]){...}不幸的是,这不起作用。因为在最好的情况下,编译器会确定数组调用f(d)上面是模棱两可的。部分解决方案:我尝

c++ - double 到固定宽度的字符串转换

我想打印一个double值,到一个不超过8个字符的字符串中。打印的数字应尽可能多,例如5.259675489205688.514e-6-9.4e-12我尝试了C++iostreams和printf风格,但都没有按照我希望的方式尊重提供的大小:cout给出:5.62525e-0055.62525e-005我知道我可以指定一个精度,但我必须在这里提供一个非常小的精度,以涵盖最坏的情况。有什么想法可以在不牺牲太多精度的情况下强制执行精确的字段宽度吗?我需要这个来打印矩阵。我真的必须想出自己的转换函数吗?5年前有人问过类似的问题:ConvertdoubletoStringwithfixedwi