小编qba*_*qba的帖子

c ++数组初始化

可能重复:
如何在C
数组初始化中初始化数组,引用前一个元素ok?

我想知道在c/c ++标准中进行这样的初始化是否安全:

int a = 5;
int tab[] = { a , tab[0] + 1 , tab[1] };
Run Code Online (Sandbox Code Playgroud)

它成功编译并执行gcc 4.5和clang 2.9,但它总是真的吗?


打印此表给出5 6 6.它在全球范围内初始化.


通常它在c和c ++中都很有趣,但我想在c ++中使用它:)

c++ arrays initialization

16
推荐指数
3
解决办法
3268
查看次数

在haskell中按索引删除元素

我是haskell的新手,我正在寻找一些标准函数来处理索引列表.

我确切的问题是我想在每5个后删除3个元素.如果它不够清楚这里是插图:

OOOOOXXXOOOOOXXX...
Run Code Online (Sandbox Code Playgroud)

我知道如何使用许多参数编写巨大的函数,但有没有聪明的方法来做到这一点?

haskell list

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

在haskell中创建monad

我想创建自己的monad.这就是我写的:

data LeafConType a = LeafCon (a,Int,Int)

instance Monad (LeafConType ) where
return = LeafCon 
lc@(LeafCon (t,i,n)) >>= f = if i>=n
                                then lc
                                else f (t,i,n)
Run Code Online (Sandbox Code Playgroud)

但这不行.Ghc说:

leafcon.hs:26:1:
    Occurs check: cannot construct the infinite type: a = (a, Int, Int)
    When generalising the type(s) for `return'
    In the instance declaration for `Monad LeafConType'

leafcon.hs:27:1:
    Occurs check: cannot construct the infinite type: a = (a, Int, Int)
    When generalising the type(s) for `>>='
    In the instance declaration for `Monad LeafConType' …
Run Code Online (Sandbox Code Playgroud)

monads haskell

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

用CUDA绘制三角形

我正在编写自己的图形库(是的,它的作业:)并使用cuda快速完成所有渲染和计算.

我有绘制填充三角形的问题.我这样编写了一个进程绘制一个三角形.当场景中有很多小三角形时它工作得很好,但是当三角形很大时它会完全破坏性能.

我的想法是做两次通过.首先计算仅包含扫描线信息的选项卡(从此处绘制到此处).这将是每个过程计算的三角形,就像当前算法一样.在第二遍中,确实绘制了每个三角形有多个进程的扫描线.

但它会足够快吗?也许有更好的解决方案?

algorithm parallel-processing cuda rasterizing

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

Python,lambda,找到最小值

我有foreach函数,它在它包含的每个元素上调用指定的函数.我希望从这个元素中得到最少但我不知道如何编写lambda或函数,甚至是一个能够管理它的类.谢谢你的帮助.


我使用我的foreach函数:

o.foreach( lambda i: i.call() )
Run Code Online (Sandbox Code Playgroud)

要么

o.foreach( I.call )
Run Code Online (Sandbox Code Playgroud)

我不喜欢制作列表或其他对象.我想通过它迭代并找到min.

我设法写一个做思考的课程,但应该有一个更好的解决方案:

class Min:                                           
    def __init__(self,i):                        
        self.i = i                              
    def get_min(self):                               
        return self.i                                
    def set_val(self,o):                             
        if o.val < self.i: self.i = o.val

m = Min( xmin )
self.foreach( m.set_val )                            
xmin = m.get_min()
Run Code Online (Sandbox Code Playgroud)

好的,所以我想我的.foreach方法是非蟒蛇的想法.我应该做我的Class iterable,因为你的所有解决方案都基于列表,然后一切都会变得更容易.

在C#中,lambda函数没有问题,所以我觉得python也很强大.

python lambda

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

迭代haskell中的数组

我的问题是我需要迭代数组并根据每个元素计算一些值.我正在为数组寻找类似折叠的函数,但标准库似乎对数组非常无用.或者我错过了什么?

另一种解决方案可能是将数组"绑定"到列表中.绑定意味着我不想复制该数组.这可能吗?

顺便说一句,这一切都与普通阵列有关.

arrays iteration haskell

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

Python - 通过引用复制

无论是int还是类实例,都有可能通过引用复制变量吗?

我的目标是拥有两个相同对象的列表,当一个更改时,更改在第二个中可见.

换句话说,我需要指针:/


我只想要int,float和其他通常由value复制的标准类型,强制通过引用复制.这将使我的代码更加一致.

如果没有这种可能性,类包装器是最好的解决方案.

python reference

5
推荐指数
3
解决办法
6294
查看次数

转换成员函数指针

我需要使用一个成员函数指针,它接受在其他代码中使用的基类的参数.好吧,我只想做[某事]如下面的例子.这段代码工作正常,但我想知道这样的演员是否总是安全的?我不能在这里做dynamicstatic投.

#include <cstdio>                                                   

class C
{                                                           
public:                                                             
        C () : c('c') {}                                            
        virtual ~C() {}                                             

        const char c;                                               
};                                                                  

class D : public C
{                                                
public:                                                             
        D () : d('d') {}                                            
        virtual ~D() {}                                             

        const char d;                                               
};                                                                  

class A 
{                                                           
public:                                                             
        A () {}                                                     
        virtual ~A() {}                                             

        void f( C& c ) { printf("%c\n",c.c); }                      
        void g( D& d ) { printf("%c %c\n",d.c,d.d); }               
};                                                                  

int main (int argc, char const* argv[])                             
{                                                                   
        void (A::*pf)( …
Run Code Online (Sandbox Code Playgroud)

c++ pointers casting member-function-pointers reinterpret-cast

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