我有一个名为Cal的类,它是.cpp和.h对应的
头文件有
class Cal {
private:
int wa[2][2];
public:
void do_cal();
};
Run Code Online (Sandbox Code Playgroud)
.cpp文件有
#include "Cal.h"
void Cal::do_cal() {
print(wa) // where print just itterates and prints the elements in wa
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何初始化数组wa?我似乎无法让它工作.
我尝试过:
int wa[2][2] = {
{5,2},
{7,9}
};
Run Code Online (Sandbox Code Playgroud)
在头文件但我得到错误说我不能这样做因为它反对iso..something.
试图wa在构造函数中初始化数组,但也没有工作..我错过了什么?
谢谢
使用一个使用16字节4v4单字节矩阵的程序:
unsigned char matrix[4][4];
Run Code Online (Sandbox Code Playgroud)
和一些256字节16v16一个字节矩阵:
unsigned char bigMatrix[16][16];
Run Code Online (Sandbox Code Playgroud)
通常由于数据操作,我被迫在程序中按列循环进行缓存未命中.
如果我使用数组,性能会提高,即
unsigned char matrix[16];
unsigned char matrix[256];
Run Code Online (Sandbox Code Playgroud)
并通过使用一些变量来检索元素来访问元素,即
matrix[variableA*variableB + i];
Run Code Online (Sandbox Code Playgroud)
每次我想访问一个元素时,需要重新计算variableA*variableB + i.
我只想要速度优化和内存没问题.这有什么帮助,比如给出一些性能上的打击或损失,还是差异太小甚至不关心?
这甚至可能吗?
让我们说代码有很多scanf行.在调试时,不是手动运行和手动添加值,而是可以用数据"输入"标准输入,这样当scanf开始读取时,它将读取输入的数据而无需与终端交互.
为了简单起见,我可以说我有一个arraylist allBooks包含类"书籍"和一个arraylist someBooks包含一些但不是所有"书籍"的书.
当我想看一个arraylist中的一本书是否也包含在另一个arraylist中时,使用contains()方法工作正常.
问题是,当我将两个Arraylists保存到.bin文件并在程序重新启动后加载它们时,这不再起作用了.执行与以前相同的测试,即使比较的对象相同(内部具有相同的信息),contains()也返回false.
我通过重载equals方法解决了它,它工作正常,但我想知道为什么会发生这种情况?
函数参数放置在堆栈上,但编译器可以通过使用可选寄存器来优化此任务。如果只有 1-2 个参数,而不是当有 256 个参数时(不是那个人想要拥有最大数量的参数),则这种优化将启动是有道理的。
如何找出某个编译器(例如 gcc)的参数限制(参数数量),从而确定将使用此优化?
分析我的程序和功能打印需要花费大量时间来执行.如何将"原始"字节输出直接发送到stdout而不是使用fwrite,并使其更快(需要同时将print()中的所有9字节发送到stdout)?
void print(){
unsigned char temp[9];
temp[0] = matrix[0][0];
temp[1] = matrix[0][1];
temp[2] = matrix[0][2];
temp[3] = matrix[1][0];
temp[4] = matrix[1][1];
temp[5] = matrix[1][2];
temp[6] = matrix[2][0];
temp[7] = matrix[2][1];
temp[8] = matrix[2][2];
fwrite(temp,1,9,stdout);
Run Code Online (Sandbox Code Playgroud)
}
矩阵全局定义为无符号字符矩阵[3] [3];
这会发生吗?3断言,其中一个应该激活.
int nr = perform_calc();
assert( nr == 0);
assert( nr > 0);
assert( nr < 0);
Run Code Online (Sandbox Code Playgroud)
如果程序没有在g ++ 3.4.4上激活断言,是否会出现这种情况.
并且我没有可能更改代码以便在断言未激活的情况下打印数字.
有任何想法吗?
编辑:在阅读了几条评论后,我被迫编辑.显示代码?你为什么要做这个蠢事?我不相信!在哪里使用?从我的问题来看,显然我不会发布/更改代码,原因有以下几种:
如果你认为我是恶作剧或恶作剧你应该投票支持关闭线程.我会完全没问题.但是添加这样的不必要的评论只会让我想要一个"态度"的标志来实现.
我要感谢其他人的意见和答案,他们实际上试图解释并回答我的问题.
好吧,与几个朋友做一些项目,我需要一些标准来用c ++命名.有没有人有任何良好的c ++命名方案,经过深思熟虑,而不是像10分钟那样.
例如,int*house应该命名为int*house_p,这样当有人读取代码时,他不需要一直滚动,想知道一个东西是指针,数组,矩阵还是其他什么......
发布您正在使用的经过深思熟虑的命名方案!
相当容易,如果BigInteger数字是543,我希望它切断最后一位数,使其为54.
两种简单的方法可以是:
事情是,我将这个表演了很多具有当然的大整数的时候.
我的猜测是,用字符串来玩会慢一些,但是我又没有那么多地使用Bigintegers,也不知道"除法"操作有多昂贵.
速度在这里是必不可少的,实现这个的最快方法是什么(内存只是速度没问题)?
其他解决方案也欢迎.
nio频道有什么用?它被添加到java时有一些很好的会谈,但我仍然没有看到人们在他们的应用程序中使用它.
它有什么问题,或者我只是没有遇到使用它的人?
关于为什么我应该打扰使用它的任何好例子?
谢谢