小编tun*_*nuz的帖子

性能偏执:Float.parseFloat(String),Integer.parseInt(String)多贵?

我最近使用JSON来存储同一类的一定数量的子类的配置参数.为了保持统一的界面,我为父类提供了public void setParameter(String, String)String getParameter(String)方法.然后,每个子类将提供的参数转换为其本机类型,并使用它们进行某种计算.

现在,我想知道:因为我已经将每个参数存储在HashMap中,为每个参数保留一个具有正确类型的单独字段真的有意义吗?每次我需要时,将String参数转换为本机类型的计算开销是多少,因为我需要经常使用它们?

谢谢
Tunnuz

java performance types casting interface

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

有一些像Objective C++的东西吗?

我正在读一篇关于iPhone编程的帖子,我注意到关于Objective C++的讨论,帖子中显示的代码看起来主要像Objective-C,但C++中也有几个片段.是否真的可以用C++编写Cocoa?

c++ macos cocoa objective-c objective-c++

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

编码实践:在矩阵乘法中按值或参考值返回?

我正在写,参照这个问题这一个,我昨天写.经过一些文档记录后,我觉得我想做的事情(以及我认为可行的事情)几乎是不可能的,如果不是不可能的话.有几种方法可以实现它,因为我不是一个经验丰富的程序员,我问你会选择哪种方式.我再次解释我的问题,但现在我有一些解决方案需要探索.

我需要的

我有一个Matrix类,我想在矩阵之间实现乘法,以便类的使用非常直观:

Matrix a(5,2);
a(4,1) = 6 ;
a(3,1) = 9.4 ;           
...                   // And so on ...

Matrix b(2,9);
b(0,2) = 3;
...                   // And so on ...

// After a while
Matrix i = a * b;
Run Code Online (Sandbox Code Playgroud)

我昨天有什么

目前我超载了两个操作员operator*,operator=并且直到昨天晚上才以这种方式定义:

Matrix& operator*(Matrix& m);
Matrix& operator=(Matrix& m);
Run Code Online (Sandbox Code Playgroud)

operator*Matrix return = new Matrix(...)在堆上实例化一个新的Matrix对象(),设置值,然后只需:

return *result;
Run Code Online (Sandbox Code Playgroud)

我今天拥有的

讨论之后,我决定以"不同的方式"实现它,以避免用户被任何类型的指针打扰并保持使用不变."不同的方式"是通过值传递operator*的返回值:

Matrix operator*(Matrix& m);
Matrix& operator=(Matrix& m);
Run Code Online (Sandbox Code Playgroud)

operator*return在堆栈上实例化,设置值然后返回对象.

这种方法存在问题:它不起作用.operator =期望Matrix&和operator*返回一个Matrix.此外,这种方法对我来说看起来并不那么好,原因是另一个原因:我正在处理矩阵,这可能非常大,而且这个库的目标是1)对我的项目来说足够好2)快,所以可能通过按价值不应该是一种选择.

我探讨了哪些解决方案

好吧,按照前面 …

c++ scope return reference

3
推荐指数
2
解决办法
2866
查看次数

有没有办法监视 C++/MacOS 中的堆使用情况?

我担心我的某些代码导致内存泄漏,并且我不确定如何检查它。有没有适用于 MacOS X 的工具或东西?

谢谢

c++ macos memory-leaks heap-memory

3
推荐指数
1
解决办法
3695
查看次数

如何在Ogre中获得无窗口应用程序?

我正在尝试创建一个无窗口的Ogre应用程序,但似乎应用程序完全忽略了RenderWindow :: setVisible(false)方法.有没有办法实现这一目标?

谢谢
Tommaso

windows window ogre3d ogre

3
推荐指数
1
解决办法
1178
查看次数

如何在C++源文件之间共享静态变量?

我不知道是否有可能做到这一点,但我尝试了几种方法似乎没有任何效果.基本上我需要从几个包含相同类定义的文件中访问相同的静态成员.

// Filename: S.h

class S {
public:
    static int foo;

    static void change(int new_foo) {
        foo = new_foo;
    }

};

int S::foo = 0;
Run Code Online (Sandbox Code Playgroud)

然后在类定义(其他.cpp文件)中我有:

// Filename: A.h

#include "S.h"    

class A {
public:
    void do_something() {
        S::change(1);
    }
};
Run Code Online (Sandbox Code Playgroud)

在另一个文件中:

// Filename: program.cpp

#include "S.h"
#include "A.h"

int main (int argc, char * const argv[]) {
    A a = new A();
    S::change(2);        

    std::cout << S::foo << std::endl;

    a->do_something();

    std::cout << S::foo << std::endl;

}
Run Code Online (Sandbox Code Playgroud)

现在,我希望第二个函数调用将S :: foo更改为1,但输出仍然是:

2 …
Run Code Online (Sandbox Code Playgroud)

c++ static scope class file

3
推荐指数
1
解决办法
3776
查看次数

push_back()总是会增加向量的大小吗?

我有一段代码创建一个已知大小的std :: vector <T>:

std::vector<T> vectorOfTs(n);
Run Code Online (Sandbox Code Playgroud)

调用push_back会将大小增加到n + 1吗?

vectorOfTs.push_back(T());
Run Code Online (Sandbox Code Playgroud)

c++ memory-management vector push-back

3
推荐指数
2
解决办法
4945
查看次数

如何用ggplot2 face强制显示空图?

我正在为R + ggplot2中的两个数据集生成箱形图,我正在使用构面来打印基于两个因素的图形网格.到目前为止一直很好,重点是两个数据集中的一个是一个因子的一个级别的完全缺失值,因此我得到一个5 x 5的网格和一个5 x 4的网格,但这些网格意味着进行眼睛比较,因此我想显示缺失值的空图.那可能吗?

谢谢,托马索

r ggplot2 facets

3
推荐指数
1
解决办法
2563
查看次数

构造函数中的奇怪行为

我有一个由几个字段组成的类,我有几个构造函数.我也有一个不带任何参数的构造函数,但是当我尝试使用它时:

int main {
    A a;
}
Run Code Online (Sandbox Code Playgroud)

编译器生成错误,而如果我像这样使用它:

int main {
    A a();
}
Run Code Online (Sandbox Code Playgroud)

没关系.那是什么?

谢谢

c++ parameters constructor

2
推荐指数
1
解决办法
210
查看次数

在C++中复制指针

我有一个类A,包含两个指向另一个类B的对象的指针.我想初始化一个指针或另一个指针,具体取决于传递给哪一个init(),这也需要其他参数.我的情况如下:

class A {

public:
    A();
    init(int parameter, int otherParameter, B* toBeInitialized);

protected:
    B* myB;
    B* myOtherB;

};
Run Code Online (Sandbox Code Playgroud)

现在我的意思是我想打电话给init():

init(640, 480, this->myB);
Run Code Online (Sandbox Code Playgroud)

要么

init(640, 480, this->myOtherB);
Run Code Online (Sandbox Code Playgroud)

现在,我的init实现为:

void init( int parameter, int otherParameter, B* toBeInitialized ) {

    toBeInitialized = someConstructorFunction(parameter, otherParameter);

}
Run Code Online (Sandbox Code Playgroud)

问题是两个指针没有初始化,我怀疑toBeInitialized被覆盖,但原始参数没有被修改.

我做错了什么?我应该使用指针的引用吗?

谢谢
Tommaso

c++ parameters pointers copy initialization

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