小编inf*_*ous的帖子

如何在C++中隐藏类?

假设我有两个类,我希望它们在一个给定的头文件中是可见的,一个类是它们的祖先,我希望它只对前面提到的两个类可见.如何在C++中实现隐藏的类功能?

c++ oop visibility

9
推荐指数
2
解决办法
5373
查看次数

是否有允许存在差距的列表实现?

我正在寻找一个可以提供差距的集合.目标是:

  • 每个元素在集合中都有一些有意义的索引.
  • 收集是稀疏的而不是连续的; 它的大小应该返回适​​当元素的数量,因此初始化的解决方法null不起作用.
  • subList 方法是期望根据索引间隔访问子列表

示例用例:

List<Integer> list = /* ? */;
list.add(0,5);
list.add(1,4);
list.add(5,3);
for( Integer i : list )
{
    System.out.print( i + " " );
}
/* desired output : "5 4 3 "*/
Run Code Online (Sandbox Code Playgroud)

java collections data-structures

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

如何在编译时检测NASM中的体系结构以获得x64和x86的一个源代码?

我在nasm中寻找一些预处理器功能,允许为x86和x64架构提供一个源代码.

我的意思是ifdef some_constant.像C预处理器一样使用,如果它想检测它是否在Windows或Linux上编译.

编辑

我知道nasm标志.我用它们.我只想拥有完全相同的源代码,并希望预处理器能够根据这些标志正确处理它.我使用ifdef ... else进行堆栈操作,因此,两个架构的核心代码都相同.

x86 assembly preprocessor x86-64 nasm

5
推荐指数
2
解决办法
874
查看次数

R:如何通过lm或nls为模型添加约束?

我估计R中的模型,我想添加约束,这将强制其中一个系数小于另一个系数.我怎样才能做到这一点?

r nls

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

为什么我不能打印传递给我程序的第一个参数?

我在c中做了一个简单的代码:

#include <stdio.h>
int main( int argc, char* argv[] ) {
    printf( "Hello, just wanted to say: %s.\n", argv[1] );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并从中制作了两个程序 - app1app2.

现在,我正在试验管道:

./app1 Bye | ./app2
Run Code Online (Sandbox Code Playgroud)

并输出投入%s(null),而不是预期的"你好".为什么?

c bash arguments

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

降低静态方法的可见性

我知道孩子不能降低非静态方法的可视性,而且我理解为什么会这样。

但是,我读过“可以通过重新声明静态方法来隐藏它”。但是我不明白如何用Java实现。

这真的有可能吗?如果是,该如何做(代码示例),为什么要引入它(这似乎与不降低接口可见性的原理相矛盾)?

java inheritance information-hiding

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

Groovy 中的地图是否保持秩序?

Groovy 中的地图是否保持提供数据的顺序?即,当迭代键时,顺序会始终保留吗?

farms = [Idaho: ["Duck", "Dog"], Ohio: ["Chicken", "Duck"], "New Mexico": ["Dog", "Cow"]]

groovy data-structures

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

构造函数低效,用于通过值从函数返回对象的情况

我的类Matrix有两个构造函数,包括复制一个,执行深度复制.这种解决方案非常适用于复制另一个对象的明显情况.虽然在以下情况中:

Matrix m = m1 * m2; // for earlier constructed m1 & m2
Run Code Online (Sandbox Code Playgroud)

在我看来效率低下,因为我在乘法运算中创建了一个对象,只是为了复制它而不是直接赋值给m.矩阵可以占据很大的内存.如何更好地处理它,专业人士的常见做法是什么?

矩阵作为二维列表动态实现,如稀疏矩阵的情况.

PS我明白乘法的结果是局部的.然而,我仍然认为,如果没有上述过度计算,它可以以某种方式处理得更好.

c++ copy-constructor assignment-operator

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

使用gcc未定义引用`__gxx_personality_v0'

可能重复:
__gxx_personality_v0是什么?

我已经在编译C++代码的上下文中看到了这个问题.但是我要编译 C代码并继续收到此错误.我被禁止使用"-lstdc ++"作为解决此gcc问题的方法.如何更改我的代码以使其正常工作以及为什么会出现此错误?

我的简化代码:

//this is main.cpp
#include <stdio.h>
int main()
{
    char ch[3];
    ch[0] = getc(stdin);
    ch[1] = getc(stdin);
    ch[2] = '\0';
    printf("%s\n", ch);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的编译命令是:

gcc main.cpp
Run Code Online (Sandbox Code Playgroud)

c gcc undefined-reference

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

如何在java swing中以线程安全的方式初始化gui对象?

我正在阅读Thinking in Java,作者强调主要方法不应该调用swing方法.作为这种做法的一个例子,他提出了以下一段代码(可在他的网页上找到):

//: gui/SubmitSwingProgram.java
import javax.swing.*;
import java.util.concurrent.*;

public class SubmitSwingProgram extends JFrame {
  JLabel label;
  public SubmitSwingProgram() {
    super("Hello Swing");
    label = new JLabel("A Label");
    add(label);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300, 100);
    setVisible(true);
  }
  static SubmitSwingProgram ssp;
  public static void main(String[] args) throws Exception {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() { ssp = new SubmitSwingProgram(); }
    });
    TimeUnit.SECONDS.sleep(1);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        ssp.label.setText("Hey! This is Different!");
      }
    });
  }
} ///:~
Run Code Online (Sandbox Code Playgroud)

然后通过invokeLater方法创建并初始化gui对象,使其成为线程安全的.但是几页之后,作者提出了以下代码:

//: gui/Button2.java
// Responding to …
Run Code Online (Sandbox Code Playgroud)

java swing multithreading thread-safety event-dispatch-thread

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

为什么即使分配将在以后发生,也需要初始化String?

我使用以下代码获取"本地变量字符串可能尚未初始化"错误.代码本身没有意义,它只是为了锻炼而编写的.

public class StringExercise
{
    public static void main(String[] args)
    {
        String string; // initializing here fixes the issue
        for (int i = 0; i < 10; ++i)
        {
            if( (i % 4) == 2 )
            {
                string = "Number: " + i;
            }
        }
        System.out.println(string); // this is marked as wrong by Eclipse
    }
}
Run Code Online (Sandbox Code Playgroud)

为了使其正常工作,初始化String就足够了,如上面的注释中所表达的那样.

我的问题是为什么需要它?该方法println永远不会被赋予null,并且在循环中的条件第一次返回true时将发生初始化.我做错了什么或只是Java对程序员的错误过于谨慎?如果是后者,从理论的角度来看,它是如何合理的呢?

java string initialization

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

如何获取R图中选定点的坐标?

我需要将鼠标指针选择的点的坐标传递给 R 程序,以执行一些计算。我在让它工作时遇到问题。

我知道这段代码应该识别图上的点:

plot(kk2$k2,kk2$k1)
identify(kk2$k2,kk2$k1)
Run Code Online (Sandbox Code Playgroud)

但即使这样也行不通。在绘图上出现一些无意义的数字,而点有两个坐标。为什么?

如何至少解决这个问题?

我的目标是将点坐标返回给 R 并对它们执行一些计算。数据集 kk2 只有两列 - k1 和 k2,仅此而已。

r

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