小编pie*_*fou的帖子

将Hash与二进制搜索树进行比较

我们都知道,如果很好地选择了哈希函数,哈希表对插入和查找都有O(1)时间.那么,我们想要使用二进制搜索树的原因是什么?仅仅因为完美的哈希函数难以设计?

我在这里如何提出这个问题?我注意到,标准 C++ STL具有setmap其与二叉搜索树实现,但没有哈希(不是说非参考标准hash_set,hash_map).虽然,Ruby只有Hash.我想了解这种差异背后的理性.

hash binary-tree

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

如何在未在gdb中加载的共享库中设置函数断点

我有一个共享库libtest.so,将使用它加载到主程序中dlopen.函数test()驻留在libtest.so主程序中并将在其中调用dlsym.有什么方法可以设置一个断点test吗?

请注意,libtest.so在链接时间内主程序尚未链接.否则,我应该能够设置断点,尽管它是一个待处理的动作.就我而言,当我这样做时b test,gdb会告诉我Function "test" not defined.

debugging gdb breakpoints shared-libraries

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

为什么在更新模式下读写之间总是需要fseek或fflush?

问:我正在尝试通过使用fopen模式"r+",读取某个字符串以及写回修改后的字符串来更新文件,但它无法正常工作.

答:一定要叫fseek你写之前,既要寻求回到你想覆盖字符串的开头,并且因为一个fseekfflush总是阅读,并在阅读写作之间需要/写"+"模式.

我的问题是在读/写"+"模式下读写之间为什么 fseekfflush总是需要?Andrew Koenig的C Traps and Pitfalls(1989)第5.2节 提到它是由于向后兼容性问题.谁能详细解释一下?

c file-io fseek

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

如何在Rails中显示URL指向的图像

HI,

我在这里有一张图片http://power.itp.ac.cn/~jmyang/funny/fun4.jpg我希望在我的Rails网站上显示它.我该怎么做?

编辑:嗯,伙计们,我现在明白了这一点.这是因为它太天真了一个问题:)对不起,我在问这个问题之前几乎不了解HTML标签,但多亏了Rails,我甚至可以自己建立一个网站.Rails岩石!

ruby ruby-on-rails image

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

红宝石中的Web爬虫

您在Ruby中编写Web爬虫的建议是什么?任何lib比机械化更好?

ruby web-crawler

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

从string创建正则表达式

有没有办法/func:\[sync\] displayPTS/从字符串创建正则表达式func:[sync] displayPTS

这个问题背后的故事是我有一个serval字符串模式来搜索文本文件,我不想一次又一次地写同样的东西.

 File.open($f).readlines.reject {|l| not l =~ /"#{string1}"/}
 File.open($f).readlines.reject {|l| not l =~ /"#{string2}"/}
Run Code Online (Sandbox Code Playgroud)

相反,我希望有一个功能来完成这项工作:

  def filter string
          #build the reg pattern from string
          File.open($f).readlines.reject {|l| not l =~ pattern}
  end
  filter string1
  filter string2
Run Code Online (Sandbox Code Playgroud)

ruby regex

11
推荐指数
2
解决办法
9527
查看次数

如何从ac函数回调lua函数

我有一个C函数(A)test_callback接受一个函数(B)的指针作为参数,A将"回调"B.

//typedef int(*data_callback_t)(int i);
int test_callback(data_callback_t f)
{
    f(3);   
}


int datacallback(int a )
{
    printf("called back %d\n",a);
    return 0;
}


//example 
test_callback(datacallback); // print : called back 3 
Run Code Online (Sandbox Code Playgroud)

现在,我想换行test_callback以便可以从lua调用它们,假设名称是lua_test_callback;并且它的输入参数也是lua函数.我该如何实现这一目标?

function lua_datacallback (a )
    print "hey , this is callback in lua" ..a
end


lua_test_callback(lua_datacallback)  //expect to get "hey this is callback in lua 3 "
Run Code Online (Sandbox Code Playgroud)

编辑:

此链接提供了一种存储回调函数以供以后使用的方法.

//save function for later use 
callback_function = luaL_ref(L,LUA_REGISTRYINDEX);


//retrive function and call it 
lua_rawgeti(L,LUA_REGISTRYINDEX,callback_function);
//push …
Run Code Online (Sandbox Code Playgroud)

lua callback

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

使用for_each的向量中每个元素的平方和

由于for_each接受的函数只接受一个参数(向量的元素),我必须定义一个static int sum = 0 某处,以便在调用for_each后可以访问它.我觉得这很尴尬.有没有更好的方法(仍然使用for_each)?

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

static int sum = 0;
void add_f(int i )
{
    sum += i * i;

}
void test_using_for_each()
{
    int arr[] = {1,2,3,4};
    vector<int> a (arr ,arr + sizeof(arr)/sizeof(arr[0]));

    for_each( a.begin(),a.end(), add_f);
    cout << "sum of the square of the element is  " << sum << endl;
}
Run Code Online (Sandbox Code Playgroud)

在Ruby中,我们可以这样做:

sum = 0
[1,2,3,4].each { |i| sum += i*i}   #local variable can be …
Run Code Online (Sandbox Code Playgroud)

c++ vector stl-algorithm

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

循环遍历Haskell中的两个变量

haskell的方法是什么?

for (int i = 0 ; i < 1000 ; i++)
      for (int j = 0 ; j < 1000 ; j++)
              ret =  foo(i , j )           #I need the return value.
Run Code Online (Sandbox Code Playgroud)

更多背景:我正在解决欧拉问题27,我得到了:

 value a  b =
     let l = length $ takeWhile (isPrime) $ map (\n->n^2 + a * n + b) [0..]
     in (l, a ,b)
Run Code Online (Sandbox Code Playgroud)

下一步是通过循环遍历所有可能的a和b来获取元组列表,然后执行以下处理:

foldl (\(max,v) (n,a,b)-> if n > max then (n , a * b) else (max ,v) ) …
Run Code Online (Sandbox Code Playgroud)

recursion haskell loops tail-recursion

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

相当于Java中C语言的__FUNCTION__

出于调试目的,我想在Java中打印出当前正在执行的函数名.如果它是C,我会这样做printf("%s \n" ,__FUNCITON__).

java debugging

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