草庐IT

二维码

全部标签

c++ - C++ 中的二维对象指针数组

如何分配指向对象的二维指针数组?目前我有:文件.hexternClassName**c;文件.cppClassName**c;intmain(){//somestuffc=newClassName*[sizex];for(inti=0;i编译失败,错误说明没有匹配operator=usingClassName和ClassName*,查看错误是有道理的。但是,如果我将c[i][j]的赋值更改为ClassNamecn();c[i][j]=cn;它给出了过多的其他错误。直到运行时(从标准输入读取)才能知道数组的大小,并且它也必须是外部的。在这种情况下声明数组的正确方法是什么?

c++ - 如何在 C++ 中创建高效的二维网格?

我想创建一个非常易于使用的2D网格。网格中的每个单元格都需要能够存储大量数据。理想情况下,我希望能够一次遍历一个单元格,并获得任何网格单元格的直接邻居。我的第一个想法是存储指向Cell邻居的指针vector(总共4个),然后为leftNeighbour、rightNeighbour等创建便利函数。初始化后连接网格。std::vector应该是一个可动态调整大小的数组,所以如果我只想硬编码指针的位置(0==左,1==右,ETC)。但是,它确实提供了一种更好的方法来遍历单元格的邻居。我必须考虑的另一件事是单元格是否位于网格边缘的边界上(是对此进行测试还是只是隐式地将网格扩展一个单元格以便永

c++ - 在二维数组中查找列的 lower_bound()

我有一个二维数组,我想在其中找到特定列的下界。我如何使用std::lower_bound做到这一点? 最佳答案 简介这并不像人们想象的那么难,让我们首先浏览一下适用于范围的算法函数的摘要。每个这样的函数,比如std::lower_bound,接受一个begin和一个end迭代器来知道它们要搜索哪些元素.我们案例中的问题是,创建一个遍历列而不是行的迭代器似乎很重要。好消息;它不是。形成指向数组的指针我们可以在C++中创建指向几乎所有内容的指针,当然也包括数组。指针的好处在于,如果我们递增一个,我们将到达下一个元素,无论指针指的是什么类

c++ - 清除任意二维数组

我正在处理一些无法使用STL容器的嵌入式代码。我有几个二维数组,其大小在编译时已知,并且想编写一个模板函数来清除它们。但是,我无法让它工作。这是我尝试过的:templatevoidclearArray(floata[sizeA][sizeB]){float*begin=&a[0][0];std::fill_n(begin,sizeA*sizeB,0.0);}intmain(){floatf[5][6];clearArray(f);for(inti=0;i但是,编译器无法成功执行参数查找:test.cpp(22):errorC2784:'voidclearArray(float[size

c++ - 在 C++ 中使用 sort() 对二维字符数组进行排序

我有一个二维字符数组(我不想使用std::string数组)。如何使用std::sort()根据字符串的长度对字符串(char*)进行升序排序?我试过以下方法。但它不起作用。charnames[100][30];boolcomp(constchar*a,constchar*b){returnstrlen(a)我发现了这些错误:1>e:\programfiles(x86)ine\microsoftvisualstudio9.0\vc\include\algorithm(3128):errorC2075:'_Val':arrayinitializationneedscurlybraces1

C++:二维数组中的指针令人困惑

谁能给我解释一下这是怎么回事?考虑代码#includeintmain(){intA[2][2]={{0}};std::cout(Trythecodehere!)在我看来,A应该是一个包含2个指向数组的指针的数组,每个数组都应该包含2个指向int的指针。但是,在运行代码时,以下内容会写入标准输出:0x7a665507cf800x7a665507cf800对我来说,这使得A中第一个元素的内存地址(打印在第一条stdout行上)与中第一个元素的内存地址相同*一个。这怎么可能,考虑到A和*A显然是两个不同的数组(因为取消引用A和*A给出不同的结果)?输出的另一种解释是内存地址0x7a66550

c++ - 在多列上对二维数组进行排序

我需要使用C或C++对多列double二维数组进行排序。有人可以指出我应该使用的算法或具有此功能的现有库(也许是boost?)吗?我觉得写一个递归函数可能是可行的方法,但我懒得写出算法或自己实现它,如果它已经在别处完成了。:-)谢谢 最佳答案 您可以使用std::sort(C++)或qsort(C或C++)来执行排序操作。棘手的部分是您需要定义一个自定义比较函数来比较您的行。例如:boolcompareTwoRows(double*rowA,double*rowB){return((rowA[0]

c++ - 使用单个值引用二维数组中的元素

我可能遗漏了一些基本的东西,但我找不到以下问题的解决方案。我有一些浮点元素的二维数组,我试图找到一种方法来仅使用单个值来引用它们。示例:floattest[5][50];test[3][25]=34.67;cout我希望从两个cout中得到相同的结果。相反,我的输出看起来像这样:34.67Segmentationfault我做错了什么?谢谢! 最佳答案 未经测试,我认为这样的方法可能有效。请注意,C++数组从左维度到右维度是major->minor。floattest[5][50];test[3][25]=34.67;cout

c++ - 二维 GLSL 渲染

(OpenGL2.0)我设法在opengl中进行了一些不错的文本渲染,并决定对其进行着色器设计。然而,在固定管道模式下看起来不错的渲染字体纹理在GLSL模式下看起来不愉快。在固定管道模式下,我看不出GL_LINEAR和GL_NEAREST过滤之间有任何区别,这是因为纹理真的不需要过滤,因为我设置了正交投影并将四边形的宽度和高度与纹理坐标对齐。现在,当我尝试使用着色器渲染它时,我可以看到一些非常糟糕的GL_NEAREST过滤伪像,并且对于GL_LINEAR,纹理显得过于模糊。固定流水线,满意,质量最好(线性/最近之间没有区别):GLSL,最近(可见的伪像,例如,查看分数字形):GLSL,

c++ - 二维阵列两个方向之间的性能测试

此代码(A)比第二个代码执行得更快(10倍):for(intw=0;w第二个:for(inth=0;h这是为什么呢?无论是水平方向还是垂直方向,遍历图像中的所有像素都是一样的。有没有办法加快第二个?提前致谢。 最佳答案 这与localityofreference有关.如果您按照元素存储在内存中的顺序访问元素,这将比以跨步模式访问它们快得多,因为内存缓存和内存带宽将得到更有效的利用。以上内容可以解释第二个版本比第一个版本更快,而这正是我的盒子上发生的情况:aix@aix:~$time./ver1real0m29.421saix@aix