小编Mor*_*enn的帖子

将Lambda传递给pthread_create?

我搜索所有网络的答案,但我没有找到任何解决方案.你能帮忙吗?我的问题是我正在尝试将Lambda发送到另一个函数并使用Pthread库来跨多个线程运行lambda.接下来是代码:

  1    #include <iostream>
  2    #include <stdlib.h>
  3    #include <pthread.h>
  4    #include <vector>
  5 
  6    using namespace std;
  7 
  8 
  9   template<class InputIt, class Function>
 10    inline Function parallel_fun(InputIt first, InputIt last, Function f)
 11    {
 12         pthread_t threads[4];
 13 
 14       for (int i=0; first != last; ++first) {
 15 
 16          pthread_create(&threads[i], nullptr,f , nullptr);
 17 
 18           i++;
 19        }
 20 
 21      for (int i=0; i<4;i++) {
 22 
 23          pthread_join(threads[i],nullptr);
 24 
 25 
 26        }
 27 
 28 
 29 
 30 …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

反射灰色代码中的幻数到二进制转换

我写了一个通用函数来将二进制反射的格雷码转换为标准二进制.我使用了本页找到的算法.这是上述算法:

unsigned short grayToBinary(unsigned short num)
{
        unsigned short temp = num ^ (num>>8);
        temp ^= (temp>>4);
        temp ^= (temp>>2);
        temp ^= (temp>>1);
        return temp;
}
Run Code Online (Sandbox Code Playgroud)

然后我修改了代码,使其适用于任何标准unsigned类型.这是我写的:

template<typename Uint>
Uint grayToBinary(Uint value)
{
    for (Uint mask = sizeof(Uint)*4 ; mask ; mask >>= 1)
    {
        value ^= value >> mask;
    }
    return value;
}
Run Code Online (Sandbox Code Playgroud)

该算法似乎适用于每种unsigned标准类型.然而,在写它时,我本能地使用,sizeof(Uint)*4因为它有意义的结束条件将取决于类型大小,但事实是我不知道sizeof(Uint)*4实际代表什么.就目前而言,这是我本能地写的一个神奇的数字,但我无法解释为什么它适用*4而不是任何其他系数.

有人知道这个神奇数字实际上对应的是什么吗?

c++ algorithm magic-numbers gray-code c++11

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

多态映射类型

Python中是否有类似多面体的类似dict的类型?这里是我的意思是多态:考虑一个基本的类层次结构与Animal基类和一些派生类Cat,Snake等等,让我们有我们的神秘映射类型mystery_dict

mapping = mystery_dict({
    Animal : 'foo',
    Cat    : 'bar',
    Snake  : 'baz',
    Python : 'eggs',
    Boa    : 'spam'
})
Run Code Online (Sandbox Code Playgroud)

现在,我希望以下几行成立:

mapping[Animal]   == 'foo'
mapping[Cat]      == 'bar'
mapping[Dog]      == 'foo' # No Dog in mapping, take the base class Animal
mapping[Snake]    == 'baz'
mapping[Boa]      == 'spam'
mapping[Anaconda] == 'baz' # No Anaconda in mapping, take the base class Snake
Run Code Online (Sandbox Code Playgroud)

我知道自从Python 3.4以来我可以使用一堆isinstance或"重载集",functools.singledispatch但在某些情况下,多态字典类型可以方便地减少样板.这种类型是存在于野外还是我必须创建一个?当然,如果你有更好的选择,我会很高兴听到它.

注意:以防问题被提出,我有相当简单的需求,所以它不必处理多重继承.

python mapping polymorphism dictionary

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

Swift三元语法错误

我曾经一直在Objective-C中编程,而且我是Swift的新手.这个错误Xcode让我真的很困惑.

func renderBufferAreaBAUp(yOffset: CGFloat, amount: CGFloat, ifLeft: Bool)
{     
        var topViewIndexForIndexAdjust = ifLeft?leftTopIndex:rightTopIndex
}
Run Code Online (Sandbox Code Playgroud)

在这一行,我打算使用三元.leftTopIndex和rightTopIndex都是Int类型.然而Xcode给了我这些特定线上的那些,

一行上的连续陈述必须用';'分隔 期待的表达

谁能告诉我这些意味着什么?谢谢.

ternary-operator swift

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

格雷码算法(32 位或更少)

我最近遇到了格雷码,我一直在试图围绕用于将格雷码转换回二进制(32 位或更少)的高效算法进行思考。

num = num ^ (num >> 16);
num = num ^ (num >> 8);
num = num ^ (num >> 4);
num = num ^ (num >> 2);
num = num ^ (num >> 1);
Run Code Online (Sandbox Code Playgroud)

这是我正在谈论的代码。现在这是我的问题:

  • 这与普通代码(右移 1 和 XOR 直到mask == 0)有什么区别?
  • 为什么要专门使用 16、8、4、2、1,而不是任何其他小于 32 位的数字?
  • 如果我们反过来做,有什么区别:

    num = num ^ (num >> 1);
    num = num ^ (num >> 2);
    num = num ^ (num >> 4);
    num = num ^ (num >> 8); …
    Run Code Online (Sandbox Code Playgroud)

algorithm gray-code

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

函数取一个参数并返回它

很长一段时间以来,我都会想到一些事情.只需考虑这个功能:

template<typename T>
T foo(const T& value)
{
    return value;
}
Run Code Online (Sandbox Code Playgroud)

它是任何给定值的最简单的函数包装器.但是,我一直在想它是否有一个"标准名称"(许多人会认识到,比如map,filter,sqrt等函数......).它们是众所周知的需要使用这种功能的问题吗?

c++ functional-programming

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

在 Django init 上启动一个简单的 python 线程

我刚刚开始使用 django。在我的开发环境中,我使用以下命令启动 django 服务器:

python manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)

并且我的 Web 应用程序按预期工作,但我也有很多错误......但到目前为止,我想在服务器 init 上运行一个后台线程,我需要一些指导。

这是我要添加的线程代码:

def synchronized(L):
    def lock_around(f):
        def locked(*a, **k):
            with L:
                return f(*a, **k)
        locked.__name__ = f.__name__
        locked.__doc__ = f.__doc__
        return locked
    return lock_around


class ProcessMsgQueue:

    def __init__(self):
        try:
            print "jaojdajdoaj"
            self.dataCounter = 0
            self.errorCounter = 0
            self.setupQueueTable()
            self.wrapperFuns = structureWrapper.WrapperClass()
            msgStruct = MsgStruct()
            self.VerifyMsgQueue()
        except:
            raise

    def setupQueueTable(self):
        self.hash_object = QueueHandler("queue_details")
        self.hash_object.EnableListener()
        self.hash_object.createNewHashRef()
        self.hash_object.create("dataMsgQueue")
        self.hash_object.create("errorMsgQueue")

    @synchronized(lock)     
    def pendMessage(self):
        print "pendMsg"
        try:
            res_mq = posix_ipc.MessageQueue(RESPONSE_QUEUE_NAME)
            res_msg = None …
Run Code Online (Sandbox Code Playgroud)

python django python-2.7

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

数据结构的新手

来自c ++入门第5版的练习题要求编写自己的sales_data课程版本.

这就是我的表现

#include <iostream>
#include <string>

struct sales data
{
    string bookno;
    unsigned int books sold;
    double revenue;
};

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行此命令会出现以下错误:

Variable sales_data has an initializer, but an incomplete type

String was not declared in this scope (How do I declare a string?)
Run Code Online (Sandbox Code Playgroud)

c++ string data-structures c++11

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

指向静态定义的二维数组的指针

代码(使用编译gcc -std=c99)......

#include <stdio.h>
#include <stdlib.h>

typedef int mytype[8][8];

int main(void)
{
    mytype CB;
    for (int r=0; r<8; r++) {
        for (int c=0; c<8; c++) {
            CB[r][c] = 5;
        }
    }

    mytype *CB2 = &CB;

    for (int r=0; r<8; r++) {
        for (int c=0; c<8; c++) {
            printf("%d ",*CB2[r][c]);
        }
        printf("\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

打印stdout错误的数据(只有第一行的数据是正确的),这些数据都是必须的5.我发现,其他数组项的指针在内存中有所改变,但我不明白为什么.

我希望,目的很明显:CB在第一个循环中设置数组的内容,然后在第二个循环中将其打印出来.这只是模型 - 指针的东西就在那里,因为我需要它.

我究竟做错了什么?

c arrays pointers c99 multidimensional-array

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

make_heap()函数如何工作?

我对Vectors和迭代器有基本的了解.但是我在理解下面代码片段的输出方面遇到了问题.

具体来说,我无法找到make_heap()函数的功能.它是如何产出的:91 67 41 24 59 32 23 13 !!

根据我的知识,堆将如下所示:

        91
       /  \
     67    41
    /  \  /  \
   59 24 32  23
  /
 13
Run Code Online (Sandbox Code Playgroud)

所以,我期待输出为:91 67 41 59 24 32 23 13

如果有人能帮助我理解make_heap()如何生成这样的输出,我将非常感激.

int main()
{
int aI[] = { 13, 67, 32, 24, 59, 41, 23, 91 };
vector<int> v(aI, aI + 8);

make_heap( v.begin(), v.end() );

vector<int>::iterator it;
for( it = v.begin(); it != v.end(); ++it )
    cout << *it << " ";
//Output: 91  67 …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

特征映射 - 它是否拥有数据指针的所有权?

我正在用Map类创建一个Matrix :

float* d = new float[rows*cols];
// ... getting data into d
Eigen::Map<Eigen::MatrixXf>(d, rows, cols);         
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 确实Map取得数据指针的所有权并在完成后将其删除?或者它是否复制数据,我应该在创建地图后自己释放它吗?

谢谢.

c++ eigen

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

如何将ieee754双倍转换为两个整数的分数?

如何获得long long(64位)值abdouble(64位)值d,使得(double)a / b更多或更少的平等d?这可能吗(不会失去精确度)?

我已经尝试过这个但是它没有得到任何地方,所以我想也许我有错误的想法:

union ieee754_double u;
u.d = d;

long long a = (long long)u.ieee.mantissa0 << 32 | u.ieee.mantissa1;
long long b = (long long)1 << (u.ieee.exponent + IEEE754_DOUBLE_BIAS);
Run Code Online (Sandbox Code Playgroud)

c floating-point

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

如何使用指针执行冒泡排序

我已经使用Pointers为Bubble Sort编写了这段代码,但是我遇到了像LVALUE这样的错误.

这是我的代码.请修复此代码.我基本上在交换语法时遇到错误.请帮忙

#include<stdio.h>
#include<conio.h>
void sort(int *a,int n);
void main()
{
    int a[20];
    int n,i;
    clrscr();
    printf("Program for BUBBLE SORT\n");
    printf("Enter the Number of ELements you want in Array\n");
    scanf("%d",&n);
    printf("Enter the Elements in UNSOTED ARRAY\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("The Unsorted ARRAY is:\n");
    for(i=0;i<n;i++)
    {
        printf("%d\t",a[i]);
    }
    printf("\n");
    sort(&a,n);
    getch();
}
void sort(int *a,int n)
{
    int i,temp,j;
    for(i=1;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            if((*a+j)==(*a+j+1))
            {
                temp=*a+j;
                *a+j=*a+j+1;
                *a+j+1=temp;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c sorting bubble-sort

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