小编Nam*_*nha的帖子

从Java调用C++函数

我正在开发一个Java应用程序,我需要在其中调用一些C++函数(来自Google Talk库libjingle).目标是在Google App Engine(仅支持Python或Java)上运行它.

我怎样才能做到这一点?

c++ java java-native-interface google-app-engine

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

为什么使用变量名称"temp"被认为是一种不好的做法?

每当我提出一个代码供专业程序员审查时,他们倾向于指出"使用名为temp的变量是坏的",但似乎没有人知道原因.

为什么它被认为是坏的?

language-agnostic

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

Java中运行时多态的示例?

运行时多态性与静态多态性有何不同?

这可以是运行时多态的一个例子吗?

public class X
{
    public void methodA() // Base class method
    {
        System.out.println ("hello, I'm methodA of class X");
    }
}

public class Y extends X
{
    public void methodA() // Derived Class method
    {
        System.out.println ("hello, I'm methodA of class Y");
    }
}
public class Z
{
   public static void main (String args []) {
       X obj1 = new X(); // Reference and object X
       X obj2 = new Y(); // X reference but Y object
       obj1.methodA(); …
Run Code Online (Sandbox Code Playgroud)

java polymorphism

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

为什么这个数学模式出现在这里?

实际问题是这样的

房间有N(1到N个)灯泡和N个开关.N个人一个接一个地进去.第一个人进去切换没有开关.第二个人进入并切换除2的倍数之外的所有开关(2,4,6 ......).第3个人进入并切换除3的倍数(3,6,9 ......)之外的所有开关,依此类推(直到第N个人切换除第N个开关之外的所有开关).一旦完成该过程,有多少个灯泡处于"开启"状态.(假设所有灯泡最初处于"关闭"状态).

原始问题可以在这里找到

我试着先写一个暴力解算器来解决它,但它会给我一个"超出时间限制"的判决,因为N可以和10E9一样大,

在测试N的某些值的解决方案时,我找到了导致最终解决方案的模式

最好用图片解释,观察1的数字,用0分隔 - 2,4,6,8 ......

python brute solver

但我仍然无法弄清楚为什么这种模式存在?换句话说,这种模式背后的数学原因是什么?

这是我使用的draw(N)代码

def draw(N):
    arr=[0]*N
    for i in range(2,N+1):
        for j in range(0,N):
            if((j+1)%i!=0):
                arr[j]^=1
    print(N,arr)
    ans=0
    for i in range(0,N):
        if(arr[i]==1):
            ans+=1
    print(ans)
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm math

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

这种排序算法的名称是什么?

它与我们在哈希中所做的有些相似,并且在哈希表中添加元素后,我只是按递减顺序搜索每个元素并删除元素,如果在打印后找到它,我用它来解决以下非常codechef上的简单问题是我用过的基本算法,但我想知道它叫什么?

func(int nos){
     int arr[1000000] = {0};
     while( nos-- ) {
        int k;
        cin>>k;
        arr[k]++;
     }
     for( i=0 ; i<1000000; ) {
        if( arr[i]==0 )
        {
         i++;
         continue;
        }
        cout<<i<<endl;
        arr[i]--;
    }
    }
Run Code Online (Sandbox Code Playgroud)

谢谢 !

sorting algorithm hashtable

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

为什么const不适用于stl map的size(),而它适用于其他容器?

在处理一个难以在整体上解释/解释的问题时遇到,所以这里是问题的相关重构.

在windows上用gnu g ++编译这段代码

int recreate(const map <int , vector<string> > &bitFieldMap){
    cout<<bitFieldMap[1].size();
}
int main(){}
Run Code Online (Sandbox Code Playgroud)

给出以下神秘错误

在函数'int recreate(const std :: map >> &&)'中:D:\ playground\testit.cpp:12:21:错误:将'const std :: map >>>传递为'std'的'st'参数:: map <_Key,_Tp,_Compare,_ Alloc> :: mapped_type&std :: map <_Key,_Tp,_Compare,_Alloc> :: operator [](std :: map <_Key,_Tp,_Compare,_Alloc> :: key_type && )[with _Key = int; _Tp = std :: vector>; _Compare = std :: less; _Alloc = std :: allocator >>>; std :: map <_Key,_Tp,_Compare,_Alloc> :: mapped_type = std :: vector>; std :: map <_Key,_Tp,_Compare,_Alloc> …

c++ stl const vector

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

为什么这个C程序不会导致字母数字值出现分段错误?

最简单的形式是该计划

int main(){
    int x;
    scanf("%d",x);
}
Run Code Online (Sandbox Code Playgroud)

当我们给这个程序任何数值作为输入时,它会通过产生我们应该期望的段错误信号而失败.

但是如果我们改为给它任何字母数字值,它就不会失败.

这是怎么回事在scanf产生这种行为?

这是使用数值运行gdb时的回溯:

(gdb) bt

 #0  0x00000034e7456ed0 in _IO_vfscanf_internal () from /lib64/libc.so.6

 #1  0x00000034e74646cd in __isoc99_scanf () from /lib64/libc.so.6

 #2  0x0000000000400553 in main ()
Run Code Online (Sandbox Code Playgroud)

那么为什么它没有像'a'或'dfgb'那样的任何字母数字值失败?

c debugging gdb internal

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