小编Rak*_*111的帖子

PyImport_Import失败 - 返回NULL

首先,是的,我已经看到了这个这个,但他们并没有解决我的问题/错误.


所以,我正在尝试从C/C++调用Python函数,但是当PyImport_Import()调用它时会返回NULL.

码:

PyObject* fname = PyBytes_FromString("hello");
PyObject* module = PyImport_Import(fname);
Run Code Online (Sandbox Code Playgroud)

hello我的hello.py文件在哪里与可执行文件位于同一目录中.我不知道我的错误在哪里,有人可以指点我吗?

c c++ python

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

数组在方括号中增加元素意味着什么?

在下面的merge-sort算法中,在第3个定义中,first while循环有:

a[k++] = (a[j] < b[i]) ? a[j++] : b[i++].
Run Code Online (Sandbox Code Playgroud)

我理解RHS是一个条件语句,声明如果满足第一个操作数,那么我们应该执行第二个操作数,如果不满足,我们应该执行第三个操作数.

什么元素做a[k++],a[j++]b[i++]对应?

根据我的理解,它应该意味着在每个连续的while循环中,元素递增.

即.与初始化值(开始i=1,j=m+1,k=1第一个),而循环,接下来的while循环将包括(i=2,j=m+2,k=2),等等.

这是整个算法:

# split in half
m = n / 2

# recursive sorts
sort a[1..m]
sort a[m+1..n]

# merge sorted sub-arrays using temp array
b = copy of a[1..m]
i = 1, j = m+1, k = 1
while i <= m and j <= n,
    a[k++] …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

为什么用int替换long long可以提高性能?

Codeforces上的某些任务在使用long long某些变量时会导致"TLE"(超出时间限制),而更改它们会int导致"已接受".

该问题如何影响代码?编译器如何处理它?为什么使用时代码更快int

c++ performance

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

从整数列表中选择一个随机数

我有一个整数列表intList = {1, 3. 5. 2}(它只是一个示例整数和大小都是未知的).我必须从该列表中选择一个随机数.

RandomInt = rand() % intList.size() 
Run Code Online (Sandbox Code Playgroud)

将以类似的方式工作 RandomInt = rand() % 4

并生成1到4之间的randon数.而intList是不同的.

如果我使用RandomInt = std::random_shuffle = (intList, intList.size()) 仍然收到错误.我不知道如何从列表中选择一个随机数.

c++

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

无法将NULL转换为指向对象的指针类型

到目前为止,我无法在Google上找到关于以下内容的解释,这让我感到困惑.

我有一个Scene存储层次结构SceneObjects.该Scene充当模板SceneObject厂,所以当簿记可以做到SceneObject创建或删除子类的实例.这两个类都在它们自己的动态链接模块中,并且位于模块命名空间内(不确定这是否重要).

(简化)SceneObject类看起来像这样:

// SceneObject is a base class, but is not pure.
class SceneObject
{
    // The parent Scene needs to be able to access protected functions.
    friend class Scene;

protected:
    // This is protected to enforce the factory design pattern.
    // We don't want SceneObjects created without being tied to a Scene.
    SceneObject(Scene* parentScene, SceneObject* parentObject);

public:
    ...
};
Run Code Online (Sandbox Code Playgroud)

而(简化)Scene类看起来像这样:

class Scene
{
public: …
Run Code Online (Sandbox Code Playgroud)

c++ pointers c++11

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

动态分配内存时发出警告

我第一次使用动态分配,编译器给了我这个警告,我在其他地方找不到:

warning: non-static data member initializers only available with 
-std=c++11 or -std=gnu++11
Run Code Online (Sandbox Code Playgroud)

有没有办法让它消失?我应该关心吗?谢谢!

c++ warnings compiler-warnings c++11

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

为什么要将类型T&T转换为T创建一个临时的?

在有效的STL项目22中,迈耶斯似乎暗示T&将一个T实例化为临时的; 那是

T x;
T& y = x;
((T)(y)).doSomething();
Run Code Online (Sandbox Code Playgroud)

结果doSomething()是在临时而不是x.

为什么演员必须暂时?

c++ casting reference

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

如何有效地用不同的整数元素替换char字符串的元素?

我期待用整数元素替换字符串的元素.我要替换A1,B2,C3D使用4.

我怎样才能有效地做到这一点?

#include <iostream>
#include <string>
#include <algorithm>


int main()
{
    std::string str = "ABCDDCBA";

    std::replace(str.begin(), str.end(), 'A', '1'); // Replacing 
    std::replace(str.begin(), str.end(), 'B', '2');  
    std::replace(str.begin(), str.end(), 'C', '3'); 
    std::replace(str.begin(), str.end(), 'D', '4');  
    // ...

    std::cout << str << std::endl; // displaying 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string integer replace

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

我可以阻止int typedef隐式转换为int吗?

我想以下不能编译.

typedef int relative_index_t;  // Define an int to only use for indexing.
void function1(relative_index_t i) {
  // Do stuff.
}

relative_index_t y = 1; function1(y);  // I want this to build.
int x = 1; function1(x);               // I want this to NOT build!
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

c++ casting

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

动态构建模板参数包

我试图让我的代码调用类列表上的方法,我希望能够在编译时配置此列表.为了使问题更清楚(我希望),这与我目前正在做的大致相同:

template <class...> class pack {};

class A {
public:
    static void foo() {};
};
class B {
public:
    static void foo() {};
};
class C {
public:
    static void foo() {};
};

using ClassList = pack<A, B, C>;

template<class T, class ...Remaining>
void do_something(pack<T, Remaining...>) {
  // do something with T
  T::foo();
  do_something(pack<Remaining...>());
}

void do_something(pack<>) {
  // do nothing, recursion ends
}

int main() {
  do_something(ClassList());
}
Run Code Online (Sandbox Code Playgroud)

基本上,它调用do_something()将A,B和C中的每一个作为模板参数T.

这是扭曲:我希望能够根据'#ifdef'动态启用或禁用A,B和C. 我显然可以使用类似的东西

#if defined(USE_A) && defined (USE_B) && defined (USE_C) …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates c++11 c++14

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