小编har*_*nds的帖子

指向deque <int> :: push_back的指针

#include <iostream>
#include <deque>

using namespace std;
main()
{
    typedef void (deque<int>::*func_ptr)(int);
    func_ptr fptr = &deque<int>::push_back;
}
Run Code Online (Sandbox Code Playgroud)

我试图获得指向此函数的指针,但我得到一个编译错误

error: cannot convert ‘void (std::deque<int>::*)(const value_type&) {aka void (std::deque<int>::*)(const int&)}’ to ‘func_ptr {aka void (std::deque<int>::*)(int)}’ in initialization
     func_ptr fptr = &deque<int>::push_back;
Run Code Online (Sandbox Code Playgroud)

我想这样做,以便我可以根据不同的条件获得指向不同成员函数的指针.

我提到了这个链接.

c++ pointers function-pointers

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

Pandas HDFStore.create_table_index不会增加选择查询速度,寻找更好的搜索方式

我创建了一个HDFStore.HDFStore包含一个组df,该组是一个包含2列的表.第一列是第一列string和第二列DateTime(将按排序顺序).已使用以下方法创建商店:

from numpy import ndarray
import random
import datetime
from pandas import DataFrame, HDFStore


def create(n):
    mylist = ['A' * 4, 'B' * 4, 'C' * 4, 'D' * 4]
    data = []
    for i in range(n):
        data.append((random.choice(mylist),
                     datetime.datetime.now() - datetime.timedelta(minutes=i)))

    data_np = ndarray(len(data), dtype=[
                      ('fac', 'U6'), ('ts', 'datetime64[us]')])
    data_np[:] = data
    df = DataFrame(data_np)
    return df


def create_patches(n, nn):
    for i in range(n):
        yield create(nn)


df = create_patches(100, 1000000)
store = HDFStore('check.hd5')
for …
Run Code Online (Sandbox Code Playgroud)

python pandas hdfstore

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

如何动态读取boost-python的ldflags?

目前,我已经编写了一个Makefile,它读取ldflagsusing pkg-config

pkg-config --libs python3
Run Code Online (Sandbox Code Playgroud)

现在,我已经找到了python3-config --ldflagspython3-config --libs在我看来哪个更好。

对我来说仍然存在的问题是,我也在使用 boost_python 并且我在我的Makefile. IE -lboost_python-py35。这样做的问题是,如果其他人使用它Makefilepython3.4他们必须将其更改为-lboost_python-py34。那么,这是否可以以某种方式变得动态化,python3-configpkg-config允许我们做类似的事情。

c++ boost makefile boost-python

5
推荐指数
0
解决办法
191
查看次数

python-普通类中的抽象方法

我正在阅读python官方文档

在提到的链接中,第二行指出:

使用此装饰器要求该类的元类为ABCMeta或从其派生。

但是,我能够成功定义以下给定的类。

from abc import abstractmethod

class A(object):
    def __init__(self):
        self.a = 5
    @abstractmethod
    def f(self):
        return self.a

a = A()
a.f()
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码工作正常。而且,我能够创建一个子类

class B(A):
    def __init__(self):
        super(B, self).__init__() 

b = B()
b.f()
Run Code Online (Sandbox Code Playgroud)

在不覆盖上面定义的抽象方法的情况下。

因此,基本上,这是否意味着如果我的基类metaclass不是ABCMeta(或从其派生的),即使我具有抽象方法,该类的行为也不会像抽象类一样?

这意味着文档需要更清晰吗?

或者,这种行为在某种程度上有用吗?我错过了重点。

python abstract-class abstract-methods

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

什么是(void)(p)在这做什么?

我正在检查代码,我遇到了以下代码段:

int check(char *a)
{

    (void)(a);//What is this line doing??
    return 0;
}

int main(void) 
{

    char *p;
    p=(char *)malloc(sizeof(char));
    check(p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(void)(a);做什么?

c

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