小编Rob*_*son的帖子

使用通配符匹配字符串

我想匹配字符串与通配符(*),其中通配符表示"任何".例如:

*X = string must end with X
X* = string must start with X
*X* = string must contain X
Run Code Online (Sandbox Code Playgroud)

此外,一些复合用途,如:

*X*YZ* = string contains X and contains YZ
X*YZ*P = string starts with X, contains YZ and ends with P.
Run Code Online (Sandbox Code Playgroud)

有一个简单的算法来做到这一点?我不确定使用正则表达式(虽然这是一种可能性).

为了澄清,用户将在上面输入一个过滤器框(尽可能简单的过滤器),我不希望他们自己编写正则表达式.所以我可以很容易地从上面的符号转换出来的东西会很好.

c# regex string wildcard

52
推荐指数
7
解决办法
8万
查看次数

std :: remove_if - lambda,不从集合中删除任何东西

好吧,我希望我在这里犯了一个愚蠢的错误.我有一个DisplayDevice3d列表,每个DisplayDevice3d都包含一个DisplayMode3d列表.我想删除DisplayDevice3d列表中没有任何DisplayMode3d的所有项目.我正在尝试使用Lambda来做它,即:

    // If the device doesn't have any modes, remove it.

  std::remove_if(MyDisplayDevices.begin(), MyDisplayDevices.end(),
   [](DisplayDevice3d& device) 
   { 
    return device.Modes.size() == 0; 
   }
  ); 
Run Code Online (Sandbox Code Playgroud)

即使出6名DisplayMode3d在MyDisplayDevices,只有1个有什么DisplayMode3d的其模式集合中,没有被从列表中删除.

我在这里犯了什么错误?

编辑:

好吧,我的错误是我应该使用MyDisplayDevices.remove_if而不是std :: remove_if,但是下面的答案对于使用std :: remove_if:p是正确的.

MyDisplayDevices.remove_if( [](DisplayDevice3d const & device) 
                            { 
                                return device.Modes.size() == 0; 
                            });
Run Code Online (Sandbox Code Playgroud)

c++ lambda erase-remove-idiom remove-if c++11

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

对象之间有效碰撞检测的最佳算法

我糊涂了.好吧不要混淆,不要想做6个测试程序,看看哪个算法最好.所以我想我会问我在这里的专家朋友给我带来他们经验的好处.

该场景是一个3d场景,与其内部对象的大小相比,可能面积相当大.场景中可能存在数千个对象.物体的大小从十分之一到大约10个单位不等,但不大(或更小).对象倾向于聚集在一起,但这些聚类可能会出现在场景中的任何位置.所有物体都是动态的,动人的.集群倾向于一起移动,但是当它们发生时,它们的速度可能不会一直相同.还需要考虑静态几何.虽然有大量的动态对象,但场景中也有一些静态对象(静态对象往往比动态对象大一到两个数量级).

现在,我想要的是一个空间数据结构,用于有效地对场景中的所有项目执行碰撞检测.如果算法也支持可见性查询,那么对于渲染管道来说会很棒.为简单起见,假设此处的碰撞检测是宽相的(即所有动态对象都是完美的球体).

所以,在我的研究中,我可以使用以下方法之一:

(1)八叉树(2)松散八叉树(3)线性八叉树(+松散)(4)KD树(5)BSP树(6)哈希

到目前为止(6)是我尝试过的唯一一个.它实际上是在速度方面完全高超(8192项碰撞下1ms的检查我的系统上),如果场景中的对象是平均均匀地分布.如果所有物体都被卷入一个较小的区域,这不是一个好的算法,我想这是可能的.

有没有人对使用哪一个有所了解,或者我可以用来加快速度的任何技巧?我想无论发生什么,我都可以使用单独的BSP树作为静态几何体.我想动态的"领域"是我最关心的问题.注意:没有CUDA,这只是CPU:p.

谢谢

编辑:好的,多亏了Floris,我发现了更多关于AABB Trees的信息.这里有关于GameDev的旧讨论:http://www.gamedev.net/topic/308665-aabb-tree---wheres-the-poly-o_o/ .看起来是一个很好的妥协.

最终编辑:决定不重新发明轮子.子弹物理库可能会为我做所有这些(它有AABB树,也可能非常优化).

structure dynamic collision-detection

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

快速,模板化,C++八叉树实现

我一直在寻找高速和低速(主要是谷歌)以获得快速,高效,模板化(即具有类似STL的属性)的八叉树实现,但没有成功.我想在3D场景图的上下文中使用它.

这样的事情是否存在,或者人们通常会自己推出?我希望stackoverflow的朋友知道在哪里找到一个.

c++ tree structure

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

为什么返回局部变量的地址或临时只是一个警告而不是错误?

刚从编译器收到此函数的警告:

template<class T>
Matrix3x3<T> & operator - (Matrix3x3<T> const & p)
{
    auto m = Matrix3x3<T>(p);

    m.m11 = -m.m11; m.m12 = -m.m12; m.m13 = -m.m13;
    m.m21 = -m.m21; m.m22 = -m.m22; m.m23 = -m.m23;
    m.m31 = -m.m31; m.m32 = -m.m32; m.m33 = -m.m33;

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

,我想知道为什么返回局部变量或临时的地址不值得一个错误.是否有必须这样做的情况?这只是"未定义的行为"而不是语言约束的理由是什么?

我什么都想不到.

c++ compiler-warnings

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

推荐HTML5/Javascript的开发环境?

可能重复:
用于JavaScript开发的IDE

我想自学HTML5和Javascript(或者如果不是Javascript,那么现在操作HTML 5和DOM的首选技术都是如此).任何人都可以为此推荐一个良好的开发环境(在Windows 7 PC上)?我可以用记事本和谷歌浏览器开始,但我非常希望有一个开发人员友好的IDE存在这种事情.

此外,作为一个后续问题,Javascript是操纵DOM的方法,还是有其他一些技术,我不知道它是否优越并且全面支持?

谢谢.

编辑:好的,我想稍微扩展一下这个场景,因为我没有把问题放到上下文中.我对使用HTML5/Canvass设计和编写GUI组件感兴趣.我已经用本机开发这样做了,并希望将我的技能扩展到网络上,所以我仍然从技能的角度来看这个基础.因此,我的目标是为其他人提供一些"拖放"(不是适合我开发的Web开发的隐喻)组件.我正在考虑HTML5/Javascript是要走的路,但我已经习惯了一个好的调试器,所以也希望能有这种能力.我不确定浏览器是否在任何合理的意义上支持这一点 - 但是专用IDE中的嵌入式浏览器可能会.

javascript ide html5

21
推荐指数
2
解决办法
6万
查看次数

是否有std :: noncopyable(或等效的)?

有一个boost :: noncopyable我在我的库里有我自己的noncopyable类.在最新的C++标准中是否有std :: noncopyable或等效的敲门声?

这是一件小事,但是从这样一个阶级派生出来的意图更加清晰.

c++ standard-library

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

sRGB纹理.它是否正确?

我最近一直在阅读有关sRGB格式的一些内容,以及它们如何允许硬件自动执行典型显示器的色彩校正.作为我阅读的一部分,我看到你可以使用普通纹理和返回结果的pow函数来模拟这一步.

无论如何,我想问两个问题,因为我之前从未使用过这个功能.首先,任何人都可以从我的截图中确认这是你期望看到的吗?左图是普通RGBA,右图是sRGB目标.场景中没有环境照明,模型是沼泽标准Phong(灯光是聚光灯).

左侧显示RGBA,右侧显示SRGBA

我想问的第二个问题是硬件实际执行的修正是什么?例如,我正在向FBO写帧,后来我使用FBO颜色缓冲区将一个屏幕大小的四边形渲染到后台缓冲区(我打算很快切换到延迟着色).我应该使用附加到FBO的sRGB纹理,还是只需要指定sRGB纹理作为后缓冲区目标?如果您使用的是sRGB,那么所有纹理资源都应该是sRGB吗?

opengl textures

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

std :: bind对我来说毫无意义

下列:

#include <functional>

struct Foo 
{
    void bar1() {}
    void bar2(int) {}
    void bar3(int, int) {}
    void bar4(int, int, int) {}
};


int main()
{
    Foo foo;

    auto f1 = std::bind(&Foo::bar1, &foo);
    auto f2 = std::bind(&Foo::bar2, &foo);
    auto f3 = std::bind(&Foo::bar3, &foo);
    auto f4 = std::bind(&Foo::bar4, &foo);

    f1(1, 2, 3, 4); // success
    f2(1, 2, 3);    // error
    f3(1, 2);       // error
    f4(1);          // error    

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

f1(1,2,3,4)编译并执行bar1().f2(1,2,3),不编译,f3(1,2)不编译(但bar3有正确的原型),f4(1)不编译.对于这3个案例,我在Visual Studio 2013中遇到的错误是

"类没有将'运算符()'或用户定义的转换运算符定义为指向函数的指针或函数引用,它接受适当数量的参数"

我对模板和标准库的理解有限,但这对我来说似乎没有任何合理意义.有一个相当简单的解释吗?

c++ std-function

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

Visual Studio本机单元测试:调试/控制台输出?

在Visual Studio 2012中的本机(C++)测试项目中运行单元测试时,有人能告诉我如何启用或获取调试或控制台文本输出吗?

答案不应包括"使用Google测试"这一短语.

c++ unit-testing visual-studio-2012

14
推荐指数
3
解决办法
8781
查看次数