小编Duc*_*een的帖子

Boost :: Bind和虚函数重载:为什么它们有效?

我写了一些代码并且害怕它不起作用 - 所以我写了一个原型:

#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <iostream>

class base {
private:
    boost::function<void (int)> action;
protected:
    virtual void onDataBaseReady(int i) { std::cout << i << std::endl; }
public:
    void call() {
        action(10);
    }

    base() {
        action = boost::bind(&base::onDataBaseReady, this, _1);
    }
};

class child : public base {
protected:
    virtual void onDataBaseReady(int i) { std::cout << i+10 << std::endl; }
};

int main()
{
    static child c;
    c.call();
    std::cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译和工作.(输出20).但为什么?我也在VS2010下进行了测试,并想知道它是否适用于跨平台(比如在GCC下编译)?

主要是action = boost::bind(&base::onDataBaseReady, …

c++ boost boost-bind boost-function

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

为什么GCC和MSVC std :: normal_distribution不同?

我有一个简单的代码示例:

#include <iostream>
#include <random>
using namespace std;
int main() {
    minstd_rand0 gen(1);
    uniform_real_distribution<double> dist(0.0, 1.0);
    for(int i = 0; i < 10; ++i) {
        cout << "1 " << dist(gen) << endl;
    }

    normal_distribution<double> dist2(0.0, 1.0);
    minstd_rand0 gen2(1);
    for(int i = 0; i < 10; ++i) {
        cout << "2 " << dist2(gen2) << endl;
    }

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

我在gccmsvc编译.我在std代码上得到了不同的结果!( 在此输入图像描述

那么为什么GCC和MSVC std::normal_distribution结果对于相同的种子和发生器是不同的,最重要的是,如何强制它们是相同的?

c++ gcc visual-studio visual-c++ c++11

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

如何在JupyterHub中设置NotebookApp.iopub_data_rate_limit和其他NotebookApp设置?

我想用jupyter notebook --NotebookApp.iopub_data_rate_limit=10000000000参数开始我的笔记本.可以在JupyterHub中设置它吗?

python configuration jupyter jupyter-notebook jupyterhub

11
推荐指数
3
解决办法
2万
查看次数

给定坐标,如何获得 K 个最远的点?

我们有 10000 行ages (float), titles (enum/int), scores (float), ....

  • 我们有 N 列,每列都有一个表中的 int/float 值。
  • 你可以把它想象成 ND 空间中的点
  • 我们想选择 K 个点,它们之间的距离最大化。

因此,如果我们在一个紧密排列的集群中有 100 个点,而在远处有 1 个点,我们将得到如下三个点的结果: 在此处输入图片说明 或这个 在此处输入图片说明

对于 4 点,它会变得更有趣并在中间选择一些点。

那么如何从 N(具有任何复杂性)中选择 K 个最远的行(点)?它看起来像一个具有给定分辨率的 ND 点云“三角测量”,但不适用于 3d 点。

我为 K=200 和 N=100000 和 ND=6(可能是基于 KDTree、SOM 或三角剖分的多重网格或人工神经网络......)寻找一种相当快速的方法(近似 - 不需要精确的解决方案)。

python metrics cluster-analysis points

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

如何将流体模拟集成到Rigid Body phisix引擎中?

1)有没有证据表明混合刚体phisix和流体(比如SPH)的模拟可以为现实世界提供建模?
2)这种混合的框架如何工作?

假设我们在一个箱子里面有一个woden秋千,里面有两种不同的液体(油和水)和一个柔软的身体球.开始条件如下: 在此输入图像描述

我们怎么能模拟这种情况呢?用什么工具?

我现在如何看待它(如果我错了请高高在上)

  1. 我们所有的身体和液体在州(*)
  2. 诸如Bullet之类的现代发动机支持软体和刚体 - 因此我们可以*在RB\SB phisix引擎中加载()并制作框架.
  3. 获取所有顶点并比较前一帧的位置.走出某种形式的矢量力场.
  4. *在流体发动机的tate()中表示我们的rb/sb,作为来自力场的脉冲的粒子
  5. load(*)使用RB和SB作为粒子,其密度对应于它们制作的材料,并且脉冲对应于先前计算的矢量场
  6. 在流体引擎中制作一个框架
  7. 更新关于粒子运动的rb/sb位置 - 获取新状态(**)

这至少在理论上可以近乎实时地用gpu上的当前流体3 +子弹3来计算......对于简单的情况......但是我想知道这使得系统不真实多少?

algorithm modeling physics bulletphysics fluid-dynamics

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

如何强制转换为boost :: bind(&myClass :: fun,this,_1,_2,_3)到typedef void(*fun)(arg1,arg2,arg3)?

在lib Bullet中定义了一种类型:

typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);
Run Code Online (Sandbox Code Playgroud)

在那里的文档中提供了一个使用示例(第23页):

void MyNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo) {
        // Do your collision logic here
        // Only dispatch the Bullet collision information if you want the physics to continue
        dispatcher.defaultNearCallback(collisionPair, dispatcher, dispatchInfo);
}
Run Code Online (Sandbox Code Playgroud)

我将这个示例代码复制到我的类defention中,所以我的类得到了这个函数,我将能够做这样的演员:

    dispatcher->setNearCallback(boost::bind(&BulletAPIWrapper::MyNearCallback, this, _1, _2, _3));
Run Code Online (Sandbox Code Playgroud)

而不是像dispatcher->setNearCallback(MyNearCallback);Bullet教程那样的C.

然而我的VS2010 sp1给了我一个错误:

Error   44  error C2664: 'btCollisionDispatcher::setNearCallback' : cannot convert parameter 1 from 'boost::_bi::bind_t<R,F,L>' to 'btNearCallback'
Run Code Online (Sandbox Code Playgroud)

所以我想知道如何将boost :: bind转换为这样的typedef?

是否有可能具有静态类函数(或至少是全局函数):

void MyNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-bind c++03

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

包含设置,加载实用程序和主应用程序的应用程序需要哪些保护证书?

假设我们有InnoSetup安装程序脚本,本机C++ QT文件加载应用程序和每次加载/更新的.Net客户端应用程序,以及哪个是主应用程序.我们通过http post\get requests加载文件.

那么,我们的应用程序需要为防病毒保护程序证明有多少不同的证书,我们确实是真正的非病毒应用程序,我们的应用程序的哪一部分需要哪些证书?

.net c++ installation qt code-signing

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

是否有可能在编译时获得包含命名空间和类名的字符串?

我不知道如何界定,将在格式定的类名称输出其命名空间和类名像宏:"Namespace.SubNamespace.ClassName"?

所以写这样的东西:

// MyClass.h
#include <string>

namespace NS {
 namespace SNS {
  class MyClass {
    static std::string str;
  };
 }
}

//MyClass.cpp
#include <MyClass.h>
using namespace std;
string NS::SNS::MyClass::str = SUPER_MACRO(/*params if needed yet none would be prefered*/);
Run Code Online (Sandbox Code Playgroud)

我想让str成为"NS.SNS.MyClass".如果可能的话,我希望那个宏有fiew params(意思是一个或没有).

或者我想知道是否可以使用以下类似的模板来完成这样的事情:

string NS::SNS::MyClass::str = GetTypeNameFormater<NS::SNS::MyClass>();
Run Code Online (Sandbox Code Playgroud)

怎么做这样的事情(使用boost,stl并且手头只有C++ 03)?

c++ boost class c++03

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

当GCC上的GTEST测试失败时,是否可以选择打印堆栈跟踪?

我在Linux上使用GTEST和GCC.我想在测试失败时看到打印的堆栈跟踪(无论是断言还是基于信号的崩溃).它可以手动完成,但我想知道它是否可以设置为GTEST构建/运行选项(对我的代码库没有多行修改)?

c++ linux gcc stack-trace googletest

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

从3个视点获得3个图像上的三个点如何在3d空间中获取其坐标?

我在3d空间中有3个视点位置(3d网格上的x,y,z坐标),方向(相对于视点原点x,y,z矢量).它们都看起来,每个都确实在空间中看到了三个点(标记(x,y)和滤出的背景)(比如我们在白色图像上有一个红色,蓝色,绿色的点).除了分辨率以外,我们不知道任何其他视点 - 相机属性,这是相同(非常相似)的相机.我们怎样才能在太空获得我们的位置?

c++ python opencv

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