小编bob*_*obo的帖子

序列化C++仿函数

你能保存C++ lambda/functor的函数体吗?

例如,假设你有

light0->lightFunction = []( real tEl, real pAz ) -> Vector {

  return Vector(
    // red is up lobe
    std::max<real>( 0., 5*cos(tEl)-4 ),

    // green lower lobe
    std::max<real>( 0., -4*sin(tEl-PI)*cos(pAz-2.5)-3),

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

并且您希望保存函数体,以便稍后加载它(而不是总是需要对其进行硬编码).

你可以做到吗?

c++ lambda serialization functor

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

功能大小与执行速度

我记得因为代码大小,CPU缓存或类似的东西,在某处"大型函数可能具有更高的执行时间".

如何判断函数大小是否会对我的应用程序造成性能影响?我怎样才能对此进行优化?我有一个CPU密集型计算,我已经拆分(与CPU核心一样多的线程).主线程等待所有工作线程完成后再继续.

我碰巧在Visual Studio 2010上使用C++,但我不确定这是非常重要的.

编辑:

我正在运行一个光线追踪器,每个像素拍摄约5,000条光线.我创建(cores-1)线程(每个额外核心1个),将屏幕分成行,并将每一行分配给CPU线程.我trace在每个线程上运行该函数大约每像素5000次.

我实际上正在寻找加快速度的方法. 这是可能对我来说,通过重构减少主要跟踪功能的大小,我想知道我是否应该希望看到一个性能增益.

很多人似乎是在这里回答错误的问题,我在寻找一个答案这个特定的问题,即使你想我大概可以做的更好,通过优化功能的内容,我想知道是否有一个功能大小/性能关系.

c++ performance multithreading function

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

这是不好的风格?

我最后编写了一些代码:

Asteroid *a = new Asteroid( asteroidCollection ) ;
Run Code Online (Sandbox Code Playgroud)

结果我不需要变量a,因为在Asteroid构造函数中,new Asteroid最终将自己添加到了变量中asteroidCollection.

所以我最终能够写:

new Asteroid( asteroidCollection ) ;
Run Code Online (Sandbox Code Playgroud)

这是不好的风格,考虑到我甚至不需要回报?我应该这样做吗?

asteroidCollection->createNew() ;
Run Code Online (Sandbox Code Playgroud)

要么

asteroidCollection->add( new Asteroid() ) ;
Run Code Online (Sandbox Code Playgroud)

c++ syntax constructor coding-style call

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

是同一个集合中的两个不同的迭代器相等

假设我使用嵌套来比较同一列表中的对象:

for( list<Object>::iterator iter = list.begin() ; iter != list.end() ; ++iter )
  {
    for( list<Object>::iterator iter2 = list.begin() ; iter2 != list.end() ; ++iter2 )
    {
      if( iter == iter2 )
      {
        // does this mean iter is pointing to the same INDEX
        // as iter2?  Will this work as expected?
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl

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

OS X上的libc ++在哪里?

我已经构建了自己的libc ++,我通常将其包含在内-I /path/to/lib/include -L /path/to/lib/lib.但是现在我必须与其他人共用一个Mac项目,我想给他们一个"正常工作"的Makefile™.

考虑以下程序:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    uint32_t nums[100];

    for (size_t i = 0; i < 10; ++i)
    {
        nums[i] = 666;
    }

    vector<int> hello{1, 2, 3, 4, 5, 6, 7, 8};
    for_each(hello.begin(), hello.end(), [](int tal)
    {
        cout << tal << endl;
    });
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,clang++ -o test test.cc我自然会得到与丢失-std=c++11标志相关的错误.好的,让我们添加它clang++ -std=c++11 -o test test.cc.这给出了几个错误,其中一个错误

test.cc:15:17: error: no matching constructor for initialization of 'vector<int>' …
Run Code Online (Sandbox Code Playgroud)

c++ macos xcode c++11

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

你能用FILE*写一个字节数组吗?

C#具有能够使用MemoryStream对象写入内存流的简洁功能.

我正在寻找C使用FILE*指针的类似功能.

我希望能够sprintf()但是在我正在写的缓冲区中添加了C记住"我在哪里"的功能.

c

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

修改$ _ENV以外的PHP超全局

在PHP中,我希望能够设置一个变量值"superglobally" - 这是一个我定义的值,可以在服务器的第一行代码上运行的每个脚本都可以访问(即不需要require_once()任何东西或者这样的事情).

目前我通过在我的系统上设置名为varname的环境变量来使用$ _ENV ['varname'].但它需要重新启动才能对Windows系统上的变量值进行更改,这并不好.

有没有其他解决方案缺乏修改PHP源?

php

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

根据google appengine中的__key __(唯一标识符)进行选择

我有了


""" A site message """
class Message( db.Model ) :
  # from/to/ a few other fields
  subject = db.StringProperty()
  body = db.Text()

  sent = db.DateTimeProperty( auto_now_add=True )

现在我试图通过它的KEY选择一条消息.我之前保存了密钥,并以HTML格式将其植入.结果是一个类似的可点击链接

<a href="/readmessage?key=aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw">click to open</a>

那么我运行这个GQL查询:

gql = """select * from Message where __key__='aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw'"""

但它不起作用,因为

BadFilterError:BadFilterError:无效过滤器:__ key__过滤器值必须是Key; 收到了aght52oobW1hZHIOCxIHTWVzc2FnZRiyAQw(一个str).

我在这里完全遗漏了一些东西,那就是你如何将一个对象放入一个GQL查询字符串..而且没有Gql解析器抱怨它是一个字符串?

python google-app-engine

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

以独立于实现的方式获取指向4字节对象的指针

当我意识到假设一个int将是一个指向长度为4个字节的指针时,我可能没有完全安全地进行编程.

因为C++的基本类型的某些方面(例如int的大小)是实现定义的.

如果您正在处理具有32位有符号整数样本的某些内容(例如波形),该怎么办?您将字节指针转换为(int*)并一次处理一个样本.

我只是很好奇获取4字节指针的"安全方式"是什么,如果未来某个时候MSVC委员会决定int现在是8个字节,那就不会停止工作.

有关

c++ portability

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

GIT中的"隐藏"事物

Git noob在这里.

我知道这是违反"分布式源代码控制"的原则,但我想在我的GIT存储库中"密码保护"某些开发分支.也就是说git branch -r,除了需要通过某种密码访问该分支的某组开发人员之外,我不希望该分支可用.

可能?

git version-control

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