小编Kor*_*icz的帖子

你可以将一个正在运行的Lua协程转储到一个文件中以便以后恢复吗?

在考虑使用Lua协同程序的游戏的加载/保存机制时,出现了一个非常有趣的问题 - 你可以将正在运行的Lua状态转储到文件中吗?除了倾销环境的明显解决方案之外,还出现了两个值得注意的问题 - 转储函数(我认为更容易),以及转储协同程序.

后者让我想知道,是否有可能为了以后的恢复呼叫而转储正在运行的协程.它的用途相当广泛 - 从长远来看,它将允许序列化正在运行的任务并将它们传递给Erlang样式.

因此问题 - 是否可能?

我不是在寻找(可能很明显)"不"的答案,因为它可能在某种程度上需要工作(在最坏的情况下,可能会试图破解编译器).我很感兴趣会有多难......

lua serialization coroutine

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

C++ 11中唯一类型识别的最安全方式

在新标准形成期间的某个地方,有一个更容易type_info使用的承诺,其中包括导致实施hash_code.在C++ 11中实现反射系统然而我又遇到了一个带有唯一类型识别的问题.

我需要:

  1. 允许我使用typeid从类型中提取唯一标识符的东西
  2. 唯一标识符需要能够在键/值容器中使用
  3. 标识符不需要是可移植的,程序执行之间也不一样

请注意,我不需要程序执行之间的持久性.看起来像:

  1. .name() 完全没用,因为标准没有任何保证.
  2. .hash_code() 也没用,因为它不能保证是独一无二的
  3. 获取指向type_info对象的指针在任何地方都不起作用(例如,跨越DLL)
  4. 只有.before()似乎是有用的-如果它不会从同一个问题,因为#3受苦虽然我不知道

即使.before()是要使用,我们也可以使用map,而我更愿意使用unordered_map.

struct compare_type_info {
    bool operator ()(const type_info* a, const type_info* b) const {
        return a->before(*b);
    }
};
std::map<const type_info*, X, compare_type_info> map;
m[&typeid(int)] = something;
Run Code Online (Sandbox Code Playgroud)

碰撞是否安全?订购操作员是否保证覆盖!<和!>值?

有没有办法在没有哈希冲突风险的情况下解决这个问题?

在卷起我自己的类型系统方面,我已经这样做了,但typeid解决了从基类型(继承)给出正确的最终类型的问题,我不想在我的类中添加任何字段(类型系统是"外部的" ").

即使在C++ 11中我们仍然搞砸了?:/

c++ typeid c++11

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

在没有默认构造函数的情况下减小std :: vector的大小

我有一个使用std::vector它的模板参数的模板类.参数可能不是默认的可构造的.我想减小矢量的大小(将其切割为给定的大小).明显

vec.resize( reduced_size );
Run Code Online (Sandbox Code Playgroud)

...不起作用,因为它需要默认的构造函数.

我当然可以:

  1. 为任何使用过的类型创建默认构造函数(这需要我在它可能不是一个好的设计选择时添加它)
  2. 将默认值传递给函数(界面的无用杂乱)
  3. 将构造方法传递给模板(也是无用的杂乱)

在写这个问题时,我注意到我可以erase从向量到结尾的元素:

vec.erase ( vec.begin() + position, vec.end() );
Run Code Online (Sandbox Code Playgroud)

...但是,我不确定这是否会如此高效resize.

有没有一种有效的方法来减少矢量的大小而没有默认的构造函数?

C++ 11解决方案是可以接受的.


编辑:似乎MSVC和GCC都实现了缩小调整大小作为擦除调用,因此这回答了我的性能问题.

c++ stl

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

编译参数类型的时间类型检测

我知道几种方法来检测给定的类是否具有指定签名的函数.我想要的是在编译时推断出签名.考虑:

struct test_class
{
    void test( int a );
    void test( float b );
};
Run Code Online (Sandbox Code Playgroud)

我可以使用decltype和SFINAE来检测指定test()的存在,使用简单的语法has_test<test_class,int>();.然而,我想要的是类似的东西test_types<test_class>::types -> mpl::list< int, float >.任何人都有一个明智的想法如何做到这一点?要求是无法准备可检测类型的列表(因此它将检测任何类型test( T ),而不仅仅是我们"注册"的类型.

c++ templates c++17

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

超轻gzip压缩实现?

我正在libral(BSD,MIT,PD)许可证中搜索C++中的超轻gzip压缩/解压缩库(明确比zlib轻).谷歌搜索显示了许多库,但要么是膨胀(如Crypto ++中的GZ压缩),要么是限制性更强的许可.

我很难相信,没有轻量级的免费gz实现......

最好是C++(我需要以流的形式提供它),但C可以.

c++ gzip

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

从std :: istream中读取SDL_RWops

我很惊讶Google没有找到解决方案.我正在寻找一种允许SDL_RWops与std :: istream一起使用的解决方案.SDL_RWops是在SDL中读/写数据的替代机制.

是否有指向解决问题的网站的链接?

一个明显的解决方案是预先读取足够的数据到内存,然后使用SDL_RWFromMem.但是,这有一个缺点,我需要事先知道文件大小.

似乎可以通过"覆盖"SDL_RWops函数以某种方式解决问题......

c++ sdl istream

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

帮助理解gluLookAt()

想象一下,你站在地上仰望着天空中的立方体.当你倾斜头部时,立方体会移动.我试图在iPhone上使用OpenGL ES通过操纵相机的倾斜来复制它,同时查看围绕原点绘制的简单3D立方体.我正在使用gluLookAt()Cocos2d中的函数,它应该模拟OpenGL版本,似乎当我尝试修改任何值时,我的立方体消失了.

我的问题是:你能在gluLookAt()这里提供一个让我开始操作相机的用法,这样我就可以弄清楚它是如何工作的吗?我真的很有兴趣学习如何沿Y轴倾斜相机.

这是我目前的代码:

视口配置

glBindFramebufferOES(GL_FRAMEBUFFER_OES, _viewFramebuffer);
glViewport(0, 0, _backingWidth, _backingHeight);
Run Code Online (Sandbox Code Playgroud)

投影矩阵

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

// Maybe this should be a perspective projection?? If so,
// can you provide an example using gluPerspective()?
glOrthof(-_backingWidth, _backingWidth,-_backingHeight, _backingHeight, -1, 1);
Run Code Online (Sandbox Code Playgroud)

ModelView矩阵

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

gluLookAt() // What goes here?
Run Code Online (Sandbox Code Playgroud)

绘图代码

static const GLfloat cubeVertices[] = {
    -1.0, -1.0,  1.0,
    1.0, -1.0,  1.0,
    -1.0,  1.0,  1.0,
    1.0,  1.0,  1.0,
    -1.0, -1.0, -1.0,
    1.0, -1.0, -1.0,
    -1.0,  1.0, -1.0,
    1.0,  1.0, …
Run Code Online (Sandbox Code Playgroud)

opengl-es

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

如何在PHP中实现汇率?

主要网站如何实现这一目标?

他们是硬编码率还是每次查找?

php

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

索引算法开发谷歌桌面搜索等应用程序?

我想像应用程序一样开发谷歌桌面搜索,我想知道我应该使用哪种索引技术/算法,这样我就可以获得非常快速的数据回溯.

algorithm full-text-search search-engine

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

VS2010 SP1 C++ STL字符串运行时行为在<string.h>和<string>之间不同

以下是差异的简单演示:

//if using <string> you can do cout << str
//if using <string.h> you must do cout << str.c_str() (else get runtime error)
#include <string> 
#include <iostream>

using namespace std;

int main( int argc, char* argv[] )
{
    char* pBuf;
    string str = "Hello World";

    //cout << str.c_str() << endl;
    cout << str << endl;


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

如何强制运行时库始终允许cout << mystr(一致,无需添加mystring.c_str())????

我的应用程序是混合的(两个#include标头都存在)....运行时混淆了吗?

c++

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