草庐IT

MAX_ARRAY_SIZE

全部标签

c++ - 将 size_t 转换为整数 (c++)

我一直在尝试制作一个for循环,该循环将根据网络数据包的长度进行迭代。在API中,event.packet->dataLength存在一个变量(size_t)。我想从0迭代到event.packet->dataLength-7每次迭代时将i增加10,但我遇到了很多麻烦。我寻找解决方案,但找不到任何有用的东西。我尝试将size_t转换为unsignedint并用它进行算术运算,但不幸的是它没有用。基本上我想要的是:for(inti=0;idataLength-7;i+=10){}虽然每次我做这样的事情或尝试我的转换时,我 最佳答案 你

c++ - std::array 聚合初始化需要大量令人困惑的花括号

我有以下代码:enumclassMessageDeliveryMethod{POST_MASTER,BUBBLE,NUM_ENUMERATORS};namespace{usingMapType=std::array,static_cast(MessageDeliveryMethod::NUM_ENUMERATORS)>;MapTypeg_mapping={{{"POST_MASTER",MessageDeliveryMethod::POST_MASTER},{"BUBBLE",MessageDeliveryMethod::BUBBLE},}};}这可以编译,但我不知道为什么。g_map

c++ - 是否有标准名称(模板或宏)来替换 ARRAY_SIZE、_countof 等?

我不是在谈论std::array或任何东西,只是经典的VanillaC/C++数组。我知道可以实现ARRAY_SIZE/_countof的各种方式,我只是想知道他们是否已经设法为此标准化了一个名称(在std::我假设)。如果没有,是否有相关建议? 最佳答案 当前的解决方法std::extent-数组的大小如果您正在使用native数组,您可以使用std::extent来自,用于生成数组的Nth维(默认为第一个)中的元素数。inta1[1024];inta2[std::extent::value];//int[1024]一点间接(通用

c++ - 在 C++11 中,如何在 vector 上调用 std::max?

我有一个vector(其中data是我自己的宠物类型)我想找到它的最大值。标准std::maxC++11中的函数似乎在对象集合上工作,但它需要一个初始化列表作为它的第一个参数,而不是像vector这样的集合。:vectorvd;std::max(vd);//Compilationerrorstd::max({vd[0],vd[1],vd[2]});//Works,butnotoksinceIdon'tvd.size()atcompiletime我该如何解决这个问题? 最佳答案 std::max重载仅适用于编译时已知的小集合。你需要的

C++11 auto 和 size_type

鉴于auto的以下用法:std::vectorv;for(autoi=0;i对于C++来说,推导i将是理想的选择作为std::vector::size_type,但如果它只查看i的初始化程序,它会看到一个整数。i的推导类型是什么?在这种情况下?这是auto的适当用法吗?? 最佳答案 使用decltype而不是auto来声明i。for(decltype(v.size())i=0;i更好的是,如@MarkB的回答所示,使用迭代器迭代vector。 关于C++11auto和size_type,

c++ - 将 size() 用于 for 构造中的第二个表达式总是不好的吗?

在下面的示例中,我是否应该期望每次循环时都会调用values.size()?在这种情况下,引入一个临时的vectorSize变量可能是有意义的。或者现代编译器是否应该能够通过识别vector大小不能改变来优化调用。doublesumVector(conststd::vector&values){doublesum=0.0;for(size_tii=0;ii请注意,我不关心是否有更有效的方法来对vector的内容求和,这个问题只是关于在for结构中使用size()。 最佳答案 这是一种明确的方法-size()只被调用一次。for(si

c++ - 为什么二维 std::array 不能用两层列表初始化器初始化?

有人能帮我理解为什么我的编译器不能/不能推断出这个吗?(使用g++7.3)不起作用:#includestd::array,2>f(){return{{0,0},{0,0}};}工作正常:#includestd::array,2>f(){return{std::array{0,0},{0,0}};}同样奇怪的是,这也失败了:#includestd::array,2>f(){returnstd::array,2>{{0,0},{0,0}};}@1201ProgramAlarm指出添加另一组花括号是可行的:#includestd::array,2>f(){return{{{0,0},{0,0

c++ - size_t 参数新运算符

我有一点想不通新运算符重载。假设,我有一个类MyClass但MyClass.hMyClass.cpp和main.cpp文件是这样的;//MyClass.hclassMyClass{public://Somememberfunctionsvoid*operatornew(size_tsize);voidoperatordelete(void*ptr);//...};//MyClass.cppvoid*MyClass::operatornew(size_tsize){returnmalloc(size);}voidMyClass::operatordelete(void*ptr){free

c++ - float 组的更快 abs-max

我需要实时绘制音频的峰值表。每秒最少44100个样本乘以最少40个流。每个缓冲区包含64到1024个样本。我需要从每个缓冲区中获取absmax。(然后这些通过一种低通滤波器馈送并以大约20毫秒的间隔绘制。)for(inti=0;i我现在就是这样做的。我想做得更快。缓冲器在-1到1范围内float,因此是晶圆厂。问题,是否有一些棘手的comp-sciquicksort-esque方法可以更快地完成此操作?否则,float的无分支ABS和MAX函数是否存在?编辑:主要平台是Linux/gcc,但计划了一个Windows端口(可能与mingw一起)。编辑,第二个:我接受了onebyone因为

如何使用 After Effects 导出摄像机跟踪数据到 3ds Max

推荐:NSDT场景编辑器助你快速搭建可二次开发的3D应用场景在本教程中,我将展示如何在AfterEffects中跟踪实景场景,然后将相机数据导出到3dsMax。1.项目设置步骤1打开“后效”。打开后效果步骤2转到合成>新合成以创建新合成。或者,您可以按 Ctrl-N 键。它打开合成设置窗口。将“宽度”和“高度”值分别设置为 1280 和 720。将帧速率设置为 25,将持续时间设置为 12 秒。单击确定。合成设置步骤3转到文件>导入>文件以导入图像序列。或者,您可以按 Ctrl-I 键。随着第一张图像选择图像序列,打开 JPEG序列选项。单击“打开”。文件>导入>文件步骤4在“项目”窗口中选择