小编rad*_*att的帖子

这是由Sean Barrett编写的27行中Vector的实现.有人可以向我解释这是如何工作的吗?

从这里:一个整洁的小C实现的弹性缓冲区(又名C++向量)代码的描述说:

使用类似'mytype myarray = NULL'之类的东西声明一个空缓冲区,然后使用sb()函数进行操作; 像往常一样通过索引来读/写单个元素

我应该这样说,我只知道一点C,这实际上是未知的领域.我从来没有使用过双指针,void指针或任何内存函数,如realloc.有人可以用简单的英语解释这段代码中发生的事情吗?它使用了许多我不理解的花哨的宏定义,这让我想知道它的外观是什么样的.

代码:

  // stretchy buffer // init: NULL // free: sbfree() // push_back: sbpush() // size: sbcount() //
    #define sbfree(a)         ((a) ? free(stb__sbraw(a)),0 : 0)
    #define sbpush(a,v)       (stb__sbmaybegrow(a,1), (a)[stb__sbn(a)++] = (v))
    #define sbcount(a)        ((a) ? stb__sbn(a) : 0)
    #define sbadd(a,n)        (stb__sbmaybegrow(a,n), stb__sbn(a)+=(n), &(a)[stb__sbn(a)-(n)])
    #define sblast(a)         ((a)[stb__sbn(a)-1])

    #include <stdlib.h>
    #define stb__sbraw(a) ((int *) (a) - 2)
    #define stb__sbm(a)   stb__sbraw(a)[0]
    #define stb__sbn(a)   stb__sbraw(a)[1]

    #define stb__sbneedgrow(a,n)  ((a)==0 || stb__sbn(a)+n >= stb__sbm(a))
    #define …
Run Code Online (Sandbox Code Playgroud)

c

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

Jekyll存档页面中的嵌套液体循环无法正常工作.在内部条件内使用外部循环变量

我正在使用jekyll静态站点构建器,我在执行以下操作时遇到困难:

{% for category in site.categories %} 
<h2 id = "{{ category[0] }}"> {{ category[0] }} </h2> 
        {% for post in site.categories[{{ category }}] %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
        {% endfor %} 
<a href="#{{ category[0] }}-ref">&#8617</a> 
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

我在我的jekyll网站上有一个名为'test'的帖子类别,我可以使用以下内容显示帖子:

{% for post in site.categories.test %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

但是,我想自动构建一个存档页面,为了做到这一点,我需要从外部循环(访问所有类别的循环)中嵌入类别,并在内部循环中使用它来访问来自该页面的帖子具体类别.我需要做些什么才能让第一个片段按我想要的方式工作?

编辑:或者,是否有另一种方法来获得我想要的结果?

ruby liquid jekyll

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

Perl qr //和替换

我正在编写一个使用Getops接受用户输入的小程序,并且基于它,程序将尝试将模式与某些文本匹配,或者将文本替换为匹配的文本.

我遇到的问题是我无法让替换部分工作.我正在查看手册页中的qr //条目:http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators但我没有运气.我试图模拟我的代码,就像本案例中的文档一样.我编译一个匹配模式,并将其替换为替换.

有人能指出我哪里错了吗?(不要太担心安全性,这只是个人用的小脚本)

这就是我在看的内容:

if($options{r}){

    my $pattern = $options{r};
    print "\nEnter Replacement text: ";
    my $rep_text = <STDIN>;

    #variable grab, add flags to pattern if they exist.
    $pattern .= 'g' if $options{g};
    $pattern .= 'i' if $options{i};
    $pattern .= 's' if $options{s};


    #compile that stuff
    my $compd_pattern = qr"$pattern" or die $@;
    print $compd_pattern; #debugging

    print "Please enter the text you wish to run the pattern on: ";
    my $text = <STDIN>;
    chomp $text;    

    #do …
Run Code Online (Sandbox Code Playgroud)

regex perl substitution qr-operator

6
推荐指数
2
解决办法
9751
查看次数

如何使用Perl递归复制目录的内容?

我在Windows Vista上运行当前版本的ActivePerl,我想知道您是否可以向我展示将文件夹及其内容复制到另一个位置的最佳和最简单的方法.内容将包括各种文件,并且很可能包含一些嵌套文件夹.

我想在那里必定有一个我不知道的模块就是这样 - 但如果有一个简单的自制类型的解决方案,我也希望看到它.

recursion perl copy

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

我怎么能写一个更高阶的函数,比如map,或者在java中减少?

我读了一篇关于Joel On Software的文章,关于使用高阶函数通过使用map和reduce来大大简化代码的想法.他提到在Java中这很难做到.文章:http://www.joelonsoftware.com/items/2006/08/01.html

下面的文章中的示例循环遍历数组,并使用作为数组中每个元素的参数传递的函数fn:

function map(fn, a)
{
    for (i = 0; i < a.length; i++)
    {
        a[i] = fn(a[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这将在实践中类似于以下调用:

map( function(x){return x*2;}, a );
map( alert, a );
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想编写一个map函数来处理数组,或者尽可能编写任何类型的Collections.

我一直在互联网上四处看看,我很难找到有关这个问题的资源.首先,java中的匿名函数是否可行?这有可能以另一种方式吗?它将在未来的java版本中提供吗?如果可能,我该怎么办?

我想如果在Java中这是不可能的,人们会用某种"模式"/技术来达到同样的效果,因为我认为匿名函数在软件世界中是一个非常强大的工具.我能找到的唯一类似的问题是:Java泛型 - 实现像map这样的高阶函数,这对我来说毫无意义.

java functional-programming higher-order-functions

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

如何在Perl中检查正则表达式模式是否有效?

首先,我想知道是否有某种内置函数可以检查正则表达式模式是否有效.我不想检查表达式是否有效 - 我只是想检查它以确保模式的语法有效 - 如果可能的话.

如果没有内置功能,我该怎么做?我还需要吗?

是否有我可以搜索的内置函数/模块的目录,所以我可以避免更多这样的问题?谢谢.

编辑:我应该提一下,我计划根据用户输入动态生成这些模式 - 这就是为什么我要验证它们以确保它们实际运行.

regex perl

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

什么操作导致并行代码运行缓慢?

阅读本文:Hitchhiker的并发指南,更具体地说,关于Amdahl定律的部分- 并行程序的速度与其最慢的部分一样快,并且程序从一开始就越平行就越快.引入更多内核,我发现自己在想:如何确保从头开始编写尽可能并行的代码?如何确保我的代码能够获得添加多个内核的最大好处?而且,哪种操作会导致代码不并行,或者并行代码变慢?代码示例当然会受到赞赏.

parallel-processing erlang

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