小编shu*_*e87的帖子

迭代二维STL向量c ++

我正在尝试打印我正在制作的游戏中玩家的动作历史.在每轮结束时,每个玩家都在正方向或负方向上移动了一些数量,并将其记录为运动矢量中的int.最终我想要为每个玩家绘制移动方向与时间的关系,但是我无法从2d向量中提取数据.

所以我尝试的第一件事就是迭代并打印所有元素,但是这不能编译:

void output_movement(const std::vector< std::vector<int> > & movement){

    std::vector< std::vector<int> >::iterator row;
    std::vector<int>::iterator col;
    for (row = movement.begin(); row != movement.end(); ++row) {
         for (col = row->begin(); col != row->end(); ++col) {
            std::cout << **col;
         }
    }

}
Run Code Online (Sandbox Code Playgroud)

编译器提供此错误消息,我不太明白:

hg_competition.cpp:45: error: no match for ‘operator=’ in ‘row = ((const std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >*)money_movement)->std::vector<_Tp, _Alloc>::begin [with _Tp = std::vector<int, std::allocator<int> >, _Alloc = std::allocator<std::vector<int, std::allocator<int> > >]()’
/usr/include/c++/4.4/bits/stl_iterator.h:669: note: candidates are: __gnu_cxx::__normal_iterator<std::vector<int, std::allocator<int> >*, std::vector<std::vector<int, std::allocator<int> …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

用c ++进行遗传编程,库建议?

我希望在我参与的运营研究项目中添加一些遗传算法.目前我们有一个程序可以帮助优化一些调度,我们希望以遗传算法的形式添加一些启发式算法.在c ++中是否有用于通用遗传编程/算法的好库?或者你会建议我自己编码吗?

我应该补充一点,虽然我不熟悉c ++,但我在c ++中进行这种数学优化工作还是比较新的,因为我以前合作的小组倾向于使用专有的优化包.

我们有一个相当计算密集的适应度函数来评估,我们有一个集群来运行它,所以非常需要并行代码.

那么c ++是一个很好的语言吗?如果没有,请推荐一些其他的,因为我愿意学习另一种语言,如果它让生活更轻松.

谢谢!

c++ genetic-programming genetic-algorithm

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

有没有代码在c ++ 11中有序列点而不是c ++ 03的情况?

现在新的c ++ 11标准已经改变了序列点的描述方式,我试图找出c ++ 03和c ++ 11之间的确切变化.

特别是,在任何情况下,看起来相同的代码在c ++ 11中都会有一个序列点而不是c ++ 03吗?

c++ sequence-points c++11

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

具有核心部分的命名空间包?

这个问题跟进在Python中创建命名空间包的方法以及如何在Python中创建命名空间包?.

注意PEP 420分发文档,其中说明:

您不能在命名空间包中包含任何其他代码和数据__init__.py.尽管它可能在开发期间或项目作为.egg文件安装时起作用,但在使用"系统"打包工具安装项目时它将无法工作 - 在这种情况下,__init__.py文件将不会被安装,更不用说执行了.


这似乎使得无法拥有一个带有独立分布式扩展子包的"主库"包.我想要的是能够:

  1. 定义一个核心库包,使用如下:

    import mylibrary
    
    mylibrary.some_function()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 允许库扩展,单独打包和分发,使用如下:

    import mylibrary.myextension
    
    mylibrary.myextension.some_other_function()
    
    Run Code Online (Sandbox Code Playgroud)

我希望能够使用命名空间包来实现这一点,但基于上面的问题和链接,似乎并非如此.这可以完成吗?

python setuptools namespace-package

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

编译包含extern"C"的程序

我正在尝试使用makefile来编译其他人编写的程序,使用cygwin.我收到很多错误信息,其中很多都抱怨error: template with C linkage.

在搜索了一下后,似乎问题与之相关extern "C".该行包含在文件cygwin/usr/include/pthread.h中,该文件包含#include < pthread.h >在其中一个标题中.当我删除此行时,大多数错误消息都会消失.但是还有一些,有以​​下几种:

/usr/include/pthread.h:67:5: error: previous declaration of ‘int pthread_atfork(void (*  )(),void ( *)(), void ( *)())’ with ‘C++’ linkage

/usr/include/sys/unistd.h:136:5: error: conflicts with new declaration with ‘C’ linkage
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?我很乐意坐下来详细了解所有这些东西,但我没有时间需要这个程序运行..

c c++ header-files extern

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

移植windows代码,使用什么代替__int64 _tmain和_TCHAR*?

我目前正在移植一些Windows代码,并尝试将其用于Ubuntu.该项目最初是用VC++编译的,没有任何问题.另外我应该注意,这只需要在Ubuntu中工作,但更多平台独立的想法当然是受欢迎的.

大多数代码都易于移植,因为它主要是一个几乎没有OS特定部分的数值模拟项目.在移植版本中没有使用UNICODE,也没有任何需要支持它.

我想知道在尝试使用GCC编译此代码时的最佳实践,特别是:

什么被认为是最好的替代品:__ int64,_tmain和_TCHAR*?

谢谢!

c++ windows gcc porting

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

如何使用setuptools管理多个python子项目?

我想知道你想要使用相同基础包的子项目的正确/最简单/最pythonic方式.我们目前有这样的文件结构:

trunk\
    proj1\setup.py
          company_name\__init__.py + proj1's code
    proj2\setup.py
          company_name\__init__.py + proj2's code
Run Code Online (Sandbox Code Playgroud)

我们希望保持命名空间company_name对我们所有的项目都是通用的(也许这本身就是unpythonic?)但是当proj1和proj2安装在开发模式下时,第一个安装会被破坏.它看起来import company_name...很困惑在哪个company_name包中查找它并抓取第一个/最后一个/随机一个.

通常如何在更大的python项目中处理?是否可以通过构建某种巨型蛋的主干中的setup.py来解决这个问题?我没有在谷歌或堆栈上找到任何相关信息,所以任何信息甚至只是链接非常感谢!


编辑:我刚尝试在根文件夹中添加setup.py

...    
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
Run Code Online (Sandbox Code Playgroud)

适当pkg_resources.declare_namespace(__name__)__init_.py文件,但./setup.py bdist_egg 只是给出:

company_name setup命令中的错误:分发包含名称空间包'company_name'的模块或包

python setuptools package name-conflict namespace-package

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

使用std :: placeholder需要哪些库?

目前我正在尝试生成组合,我使用以下代码:

#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>

template<class RandIt, class Compare>
bool next_combination(RandIt first, RandIt mid, RandIt last)
{
    std::sort(mid, last, std::bind(std::less<int>(), std::placeholders::_2
                                            , std::placeholders::_1));
    return std::next_permutation(first, last, std::less<int>());
}
Run Code Online (Sandbox Code Playgroud)

使用g ++无法编译说:

next_combo.cpp: In function ‘bool next_combination(RandIt, RandIt, RandIt)’:
next_combo.cpp:10: error: ‘bind’ is not a member of ‘std’
next_combo.cpp:10: error: ‘std::placeholders’ has not been declared
next_combo.cpp:11: error: ‘std::placeholders’ has not been declared
Run Code Online (Sandbox Code Playgroud)

我认为std :: placeholders是在功能上声明的,但现在我很困惑.我应该只使用提升吗?

该项目的其余部分也使用c ++ 0x,那么有更好的方法使用c ++ 0x功能编写它吗?

任何帮助是极大的赞赏 :)

c++ bind

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

add_lvalue_reference有什么作用?

我有这个类为montecarlo模拟器创建一个路径,它从一个可用的int数组创建整数路径.因此,例如,我们可以有从含有数组{0,1,2,3,4}拉伸长度为3的路径,这将例如生成3,1,2和1,4,0​​.

//This path generator just generates a list of ints for each path
template< typename randgen >
class MCPathGen {
    public:
        typedef vector< int > mcpath_t;
        typedef randgen randgen_t;
        typedef typename add_lvalue_reference<randgen>::type randgen_ref_t;

        MCPathGend(randgen_ref_t r) : m_rgen(r) {}

        //generate a single path by shuffling a copy of blank_d
        mcpath_t operator()() {
            Chooser< randgen_t > choose(m_rgen);
            mcpath_t path_temp(blank_d.begin(), blank_d.end());
            random_shuffle(path_temp.begin(), path_temp.end(), choose);

            return path_temp;
        };

    private:
        randgen_ref_t m_rgen;

};
Run Code Online (Sandbox Code Playgroud)

现在我不太确定我的同事使用了什么 typedef typename add_lvalue_reference<randgen>::type randgen_ref_t;

add_lvalue_reference有什么作用?这对于使代码有效是必要的吗?

我以前没见过,所以任何见解都值得赞赏!

c++ c++11

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

修改python字节码

我想知道如何修改字节码,然后重新编译该代码,以便我可以在python中使用它作为一个函数?我一直在努力:

a = """
def fact():
    a = 8
    a = 0
"""
c = compile(a, '<string>', 'exec')
w = c.co_consts[0].co_code
dis(w)
Run Code Online (Sandbox Code Playgroud)

反编译为:

      0 LOAD_CONST          1 (1)
      3 STORE_FAST          1 (1)
      6 LOAD_CONST          2 (2)
      9 STORE_FAST          1 (1)
     12 LOAD_CONST          0 (0)
     15 RETURN_VALUE   
Run Code Online (Sandbox Code Playgroud)

假设我想摆脱第0和第3行,我打电话给:

x = c.co_consts[0].co_code[6:16]
dis(x)
Run Code Online (Sandbox Code Playgroud)

这导致:

      0 LOAD_CONST          2 (2)
      3 STORE_FAST          1 (1)
      6 LOAD_CONST          0 (0)
      9 RETURN_VALUE   
Run Code Online (Sandbox Code Playgroud)

我的问题是如何处理x,如果我尝试exec x我得到一个'没有nullbytes的预期字符串,我得到相同的exec w,尝试编译x结果:compile()期望字符串没有空字节.

我不知道最好的方法是什么,除了我可能需要创建某种代码对象,但我不知道如何,但我认为它必须是可能的字节游戏,python汇编程序等

我正在使用python 2.7.10,但如果可能的话,我希望将来兼容(例如python 3).

python bytecode

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