标签: reference

在C++中返回Vectors标准

现在,我知道这是一个常见的问题,但我还没有真正找到答案.这真的是一个关于标准的问题.我正在研究一个涉及遗传算法的项目.但是,当涉及到返回矢量时,我遇到了瓶颈.有没有"适当的"方法来做到这一点.通常我使用动态分配的数组,并返回一个指向新创建的数组的指针.

obj* func(obj* foo);
Run Code Online (Sandbox Code Playgroud)

这样,一切都很有效,没有数据复制.有没有相当于用矢量这样做?这个向量中有对象,所以按值返回它会很慢.是通过引用传递"结果"向量的唯一解决方案吗?

void func(vector<obj> &input, vector<obj> &result);
Run Code Online (Sandbox Code Playgroud)

并且,在备注以供将来参考时,在动态分配的数组上使用向量或其他STL容器是标准做法吗?动态分配的数组是否仅用作设计容器的低级工具?它们只是过去的遗物吗?

c++ reference vector dynamic-arrays return-by-value

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

内存释放另一个类里面的类

我试图了解如果一个类创建另一个类,如何回馈内存.

我有

 Clas A;
Run Code Online (Sandbox Code Playgroud)

然后另一个为A类分配内存的类:

class B{
    private:
        A* data;
    public:
        // Allocating new memory
        B (){
                  A* data =  new A();

        //giving memory back
        ~B(){
                   delete data; };
};
Run Code Online (Sandbox Code Playgroud)

当我在main函数中执行代码时,它就崩溃了.怎么了?我在这里有点迷失.谢谢.

c++ memory pointers allocation reference

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

我什么时候可以使用"=="运算符?

我从jls找到了引用:

等于运算符可用于将两个可转换的操作数(第5.1.8节)与数字类型,或两个类型为boolean或Boolean的操作数,或两个操作数(分别为引用类型或null类型)进行比较.所有其他情况都会导致编译时错误.

但是这段代码

   String str= "";
   Number num = 1;
   System.out.println(str == num);
Run Code Online (Sandbox Code Playgroud)

每个操作数都是参考!

说它是不兼容的类型.

jls在哪里说这些类型应该兼容?

java equality reference jls

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

使用现有实例(如果使用相同的值构造)

我必须创建一个允许以下内容的类/构造函数:

Object a = new Object("test");
Object b = new Object("test");

a == b // should be true
Run Code Online (Sandbox Code Playgroud)

所以对象a和b不仅应该根据它们的值相同,而且应该使用相同的引用并引用相同的内存.

构造函数应该查明具有给定值的实例是否已经存在,如果是,则只需获取引用并将其指向现有对象.

有没有办法获得特定类的所有创建实例?有人可以给我一个简短的提示从哪里开始?我不知道...

java constructor reference instance inner-classes

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

如何在C中的变量中存储多维数组?

我们有以下两个静态定义的字节数组......

unsigned char pixelBuffer1[32][6] = {/**/};
unsigned char pixelBuffer2[32][6] = {/**/};
Run Code Online (Sandbox Code Playgroud)

我们想将当前缓冲区存储在变量中,但我们不确定如何声明它.这就是我们想要做的......

[SOMETYPE] activePixelBuffer;

activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
    ? pixelBuffer1
    : pixelBuffer2;

activePixelBuffer[17][4] = x;

activeBufferId == getOneOrTwoBasedOnSomeLogic();
activePixelBuffer = (activeBufferId == 1)
    ? pixelBuffer1
    : pixelBuffer2;

activePixelBuffer[23][2] = y;
Run Code Online (Sandbox Code Playgroud)

(注意我们在整个代码中重新分配activePixelBuffer的值)但是,我们不确定要输入什么 [SOMETYPE]

我知道如果我们将pixelBuffer1或pixelBuffer2传递给一个函数,我们会像这样定义它...

void someFunc(unsigned char (&myArray)[32][6])
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

...但这似乎不能作为局部变量声明类型.此外,这迫使我们硬编码维度大小,这是好的,但不必这样做是很好的.

我们也尝试过使用指针,但阵列的二维方面也让我们失望.

那么我们用什么类型?

c arrays types reference

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

Python,引用与运行文件在同一目录中的文件

如果我有一个名为example.py的Python文件,with open('%s/data.csv' % sys.path[0]) as var_name:并且data.csv与example.py位于同一目录中,那么如果我从终端运行example.py它会正常工作,但是当使用unittest时它不起作用.我的理解是,当从终端运行它时,sys.path [0]为我提供了正在运行的文件的路径(example.py),因此如果data.csv和example.py在同一目录中,那么sys. path [0] /data.csv将正确找到data.csv.但是当unittest运行时,无论什么幕后原因,sys.path [0]都是空的,并且正确找不到/data.csv.

所以我想知道什么是一个好的策略(也许是一些显式的代码:))是为了使这个引用总是工作无论如何(我猜没有sys.path [0]但是如果有一些东西可以使用我将会接受).

我还应该提到我在OS X 10.9.3上使用python 2.7

python reference file sys

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

延迟初始化引用 - 初始化的内容是什么?

我有一个类,我希望在稍后的程序初始化时实例化.在那之前我绝对不希望那个类的任何实例.我希望这个实例在全球范围内可用.

最简单的方法是拥有一个全局变量,它是对该类的引用,这很容易 - 只需在实例化类之后立即分配引用.除非我需要在那之前用某些东西填充该引用,否则我将被声明为引用但未初始化,并且我宁愿不创建所述类的虚拟实例.

什么是让它运作的正确方法?

    configClass&  global_config;   // = ?


    init()
    {
       //... other prerequisites for loading the config
       static configClass _cfg(CONFIG_FILE,other_params);
       global_config = _cfg;
       //more code, using global_config
    }
Run Code Online (Sandbox Code Playgroud)

c++ reference

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

传递const引用:性能提升?

这之间是否有任何有价值的性能差异:

int myFunction(const int &a) { return 2 + a; }
Run Code Online (Sandbox Code Playgroud)

还有这个:

int myFunction(int a) { return 2 + a; }
Run Code Online (Sandbox Code Playgroud)

据我所知,第二种方法将变量的副本作为参数传递给新寄存器,这在asm代码中需要更多的指令.在这种情况下,这个函数被称为千次,性能至关重要,传递const引用而不是变量更好吗?

c++ performance const reference function

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

PHP在使用对象分配时是否总是复制?

例如,我有以下课程.

class A {
  public $foo = 1;
}  

$a = new A;
$b = $a; // a copy of the same identifier (NB)
Run Code Online (Sandbox Code Playgroud)

根据当前的PHP文档,制作了一个标识符的副本,这种情况一直如此吗?如果不是,它什么时候改变了?

php reference object

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

Perl:使用引用"HASH(0x13bd718)"作为数组索引

我正在编写一个脚本来实现游戏2048来练习perl,并且会出现错误,如下所示:

在2048.pl第181行第11行使用引用"HASH(0x13bd718)"作为数组索引.

涉及的代码是这样的子程序:

sub gen1{
  my @free_locs = {};
  my $length;
  my $rand_loc;
  my $insert_loc;
  for ($i=0; $i<16; $i++){ 
    if($all_lines[$i] == 0){push @free_locs, $i;}
  }
  $length = @free_locs;
  $rand_loc = int rand $length;
  if ($rand_loc == $length) {$rand_loc--;}
  $insert_loc = $free_locs[$rand_loc];
  $all_lines[$insert_loc] = &generate();
  &row_update;
  &col_update;
}
Run Code Online (Sandbox Code Playgroud)

起初我写的就像那样

$all_lines[$free_locs[$rand_loc]] = &generate();
Run Code Online (Sandbox Code Playgroud)

错误似乎更频繁地出现.然后我切换到上面显示的子程序中的代码,这似乎减少了它发生的机会,但它仍然发生......

我的编码方式有什么问题吗?编写这样一段代码最干净的方法是什么?

感谢致敬,

特里

arrays perl reference

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