草庐IT

c++ - 从 1D 数组表示计算 3D 索引的有效方法

我有一个3D数据,存储在一维数组中。我这样计算一维索引:index=i+j*WIDTH+k*WIDTH*HEIGHT我需要从index中获取原始的i,j,k索引。显而易见的方法是这样的:k=index/(WIDTH*HEIGHT)j=(index%(WIDTH*HEIGHT))/WIDTHi=index-j*WIDTH-k*WIDTH*HEIGHT但我想知道,是否有更有效的方法来做到这一点?至少没有模...这个问题的上下文-我在CUDA中有一个内核,我可以在其中访问数据并计算i,j,k索引(index对应于唯一的线程ID).那么也许有一些特定于CUDA的方法可以做到这一点?我想这是一个

c++ - 使用 memcpy 时出现内存错误?

我正在使用dcmtk库修改多帧压缩dicom图像的像素数据。因此,要做到这一点,在for循环的一个阶段,我获取每个解压缩帧的像素数据并根据我的意愿修改它们,并尝试将每个修改后的像素数据连接到一个大内存缓冲区帧中框架。for循环的核心过程如下。问题是在第一次迭代之后,它在我调用函数getUncompressedFrame的代码行提供了内存。我认为这是因为memcpy(fullBuffer+(i*sizeF),newBuffer,sizeF);行而发生的,因为当我删除该行时,当时没有错误,整个for循环工作得很好.如果我在使用memcpy时犯了错误,你能告诉我吗?谢谢。Uint32size

c++ - 如何在可变类型包中获取类型的索引?

例如templatestructIndex{enum{value=???}};并假设T是T之一,并且T具有不同的类型,例如Index::valueis0Index::valueis1 最佳答案 #include#includetemplatestructIndex;templatestructIndex:std::integral_constant{};templatestructIndex:std::integral_constant::value>{};您可能想添加c++14变量模板:templateconstexprstd::

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

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

github页面挑选读数,而不是index.html

我正在使用GitHub页面托管我一直在研究的单个页面应用程序。这是我第一次使用github页面。该项目基于AngularJS,项目的结构就像项目:srcindex.html......这是一个公共回购,您可以看到https://github.com/chanikyamohan/angular-play问题是github页面正在拾取readme文件,而不是index.html。关于如何修复它有什么建议吗?谢谢。看答案您的index.html在SRC文件夹中。将其放在GH页面的顶部

c++ - 递归函数上的 OpenMP 并行化

我正在尝试使用并行化来提高绘制具有分层排序对象的3D场景的刷新率。场景绘制算法首先递归遍历对象树,然后构建绘制场景所需的基本数据的有序数组。然后它多次遍历该数组以绘制对象/叠加层等。因为从我读到的OpenGL不是线程安全的API,我假设数组遍历/绘图代码必须在主线程上完成,但我我在想我也许可以并行化填充数组的递归函数。关键是数组必须按照对象在场景中出现的顺序填充,因此所有将给定对象与数组索引相关联的功能都必须以正确的顺序完成,但是一旦分配了数组索引,我可以使用工作线程填充该数组元素的数据(这不一定是微不足道的操作)。所以这是我试图得到的伪代码。我希望您了解xml-ish线程语法。rec

c++ - 为什么这个 get_index 实现在 VS2017 上失败了?

巴里给了我们thisgorgeousget_indexforvariants:templatestructtag{};templatestructget_index;templatestructget_index>:std::integral_constant...>(tag()).index()>{};按如下方式使用:usingV=variant;constexprconstsize_tN=get_index::value;//1它在Clang(OSX)中运行良好。但在VisualStudio2017中I'mgetting以下内容:(10):errorC2039:'index':is

C++ Qt QComboBox 与 TableView

我对QComboBox有疑问。我需要一个带有tableview项目的组合框。例如QComboBox的默认是:┌─────────┐│▼│├─────────┤│index0│├─────────┤│index1│├─────────┤│index2│├─────────┤│index3│└─────────┘我需要像这样创建ComboBox:┌───────────────────┐│▼│├─────────┬─────────┤│index0│index1│├─────────┼─────────┤│index2│index3│└─────────┴─────────┘我写了示例,但

c++ - 将元素插入排序数组并找到其索引的最有效方法

我需要将一个元素插入排序范围,但我还需要知道它的索引(范围内小于该元素的元素数)。我想在O(logN)时间内完成此操作。我可以使用基本的C++容器执行此操作吗?我想使用std::multimap,有了这个容器,我可以将元素插入到它的位置,复杂度为O(logN)。但是要获取索引,我需要调用std::distance,这需要O(N)操作,因为multimap迭代器不是随机访问。另一种方法是使用排序的std::vector和std::binary_search算法。在这种情况下,搜索需要O(logN),但插入将需要O(N)操作,因为插入vector中间是线性操作。那么,是否有std/boos

c++ - 在 C++ 中打印带有扩展名的当前文件名

我正在编写C++代码,我想打印当前文件名及其扩展名。是的,这是常见问题之一。一种解决方案是使用argv[0]。这很酷,但它没有提供扩展。我可以使用扩展程序吗? 最佳答案 您可以使用std::cout打印完整路径名.如果你想单独打印文件名,那么你可以这样做:std::stringfile=__FILE__;size_tindex;for(index=file.size();index>0;index--){if(file[index-1]=='\\'||file[index-1]=='/')break;}std::cout