小编Ari*_*nen的帖子

如何在C/C++中最好地处理动态多维数组?

在C和/或C++中操作动态(所有维度直到运行时才知道)的多维数组的接受/最常用方法是什么.

我正在努力找到完成此Java代码的最简洁方法:

public static void main(String[] args){
 Scanner sc=new Scanner(System.in);
 int rows=sc.nextInt();
 int cols=sc.nextInt();
 int[][] data=new int[rows][cols];
 manipulate(data);
}

public static void manipulate(int[][] data){
   for(int i=0;i<data.length;i++)
   for(int j=0;j<data[0].length.j++){
         System.out.print(data[i][j]);       
   }    
}
Run Code Online (Sandbox Code Playgroud)

(从std_in读取只是为了澄清维度直到运行时才知道).

编辑:我注意到这个问题非常受欢迎,即使它很老了.我实际上并不同意最高投票的答案.我认为C的最佳选择是使用一维数组,如Guge所说:"你可以分配行cols sizeof(int)并通过表[row*cols + col]来访问它."

C++有很多选择,如果你真的喜欢boost或stl,那么下面的答案可能更好,但最简单也可能最快的选择是使用C中的单维数组.

如果你想要[] []语法,那么在C和C++中另一个可行的选择是lillq在底部的答案是手动构建具有大量malloc的数组.

c c++ arrays multidimensional-array

25
推荐指数
5
解决办法
3万
查看次数

将Vertex Buffer Object用于非常动态的数据是一个好主意吗?

我有许多粒子,每个帧都会改变顶点.当前正在使用"客户端"内存中的顶点数组绘制顶点.如果我使用顶点缓冲区对象,我可以期待什么性能特征?

因为我必须使用一些glBuffersubData来更新粒子顶点,所以我无论如何都要将每个帧的顶点转移到视频内存(就像我使用常规顶点数组一样)?在这种情况下,VBO有什么好处吗?

这适用于iOS设备.实际的绘制调用:glDrawElements(GL_POINTS,num_particles,GL_UNSIGNED_SHORT,pindices);

我应该使用GL_STREAM_DRAWGL_DYNAMIC_DRAW

iphone graphics opengl-es vbo

17
推荐指数
2
解决办法
4781
查看次数

是否可以读取正在运行的java应用程序的内存?

我想学习如何,或者它是否可能以编程方式与黑盒java应用程序交互(通过读取其数据).有没有以前的研究/工作做这种事情?

我认为在JVM上运行会使事情变得非常复杂.

@anon:对任何JVM执行此操作都是相关的.您是否必须了解或控制JVM如何分配内存以从Java应用程序中提取数据的细节?

java memory jvm

15
推荐指数
1
解决办法
1967
查看次数

有哪些方法来模块化C代码?

您知道在项目规模扩大时模块化C代码有哪些方法,实践和约定?

c encapsulation namespaces module scoping

12
推荐指数
3
解决办法
2618
查看次数

Java servlet和数据库连接池

只是查看Web上连接池的示例,它们都基于每个servlet实现连接池.因此每个servlet都有自己的数据库连接池.我的问题是,为什么这比全局数据库连接池更可取?由于全局池似乎比每个servlet池更有效.

此外,因为我正在考虑实施这样的池.有没有办法在servlet之前初始化一个类(我正在使用jetty btw)?我刚刚开始进行servlet开发,但这对于其他类似于配置的东西似乎也很有用.否则我只是会使用某种类似单身的模式..

java servlets connection-pooling web-applications jetty

4
推荐指数
1
解决办法
4279
查看次数