小编rlb*_*ond的帖子

c ++测试如果2组是不相交的

我知道STL有set_difference,但我需要知道2 sets是否是不相交的.我已经分析了我的代码,这使我的应用程序放慢了很多.有没有一种简单的方法可以看出2套是不相交的,还是我只需要自己编写代码?

编辑:我也试过,set_intersection但它花了相同的时间......

c++ algorithm stl disjoint-sets

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

Visual C++中多个项目之间的链接器错误

我有一个包含多个项目的解决方案.我有一个"主"项目,作为菜单,从那里,用户可以访问任何其他项目.在这个主项目中,我得到了每个被调用函数的链接器错误.如何避免这些链接器错误?我已经在"Project Dependencies ..."对话框中设置了项目依赖项.

谢谢

编辑 - 我按照建议做了,并将输出文件夹添加到链接器的其他目录中.但是,现在我得到了一百万个错误如下:

3>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall std::basic_ios >::setstate(int,bool)" (?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z) already defined in panels.lib(panel_main.obj)
3>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::ios_base::width(int)" (?width@ios_base@std@@QAEHH@Z) already defined in panels.lib(panel_main.obj)
3>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: int __thiscall std::basic_streambuf >::sputn(char const *,int)" (?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z) already defined in panels.lib(panel_main.obj)
3>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static bool __cdecl std::char_traits::eq_int_type(int const &,int const &)" (?eq_int_type@?$char_traits@D@std@@SA_NABH0@Z) already defined in panels.lib(panel_main.obj)
3>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: static int …
Run Code Online (Sandbox Code Playgroud)

projects-and-solutions visual-studio visual-c++

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

帮助开始使用Boost.Test

我正在尝试开始单元测试.我正在寻找一些C++框架,并想尝试Boost.Test.文档看起来非常彻底,而且有点压倒性,尤其是新的单元测试人员.所以这是我想要的情况:

假设我有2个课程,Foo并且Bar.我想编写一套测试Foo和一套测试Bar,最好是在不同的文件中.我只想在运行带有命令行参数的程序时才运行测试.所以我main()应该看起来像:

int main(int argc, const char* argv[])
{
    if (argc == 1 && strcmp(argv[0], "-test") == 0)
        run_all_tests();
    else
        return program_main(argc, argv);
}
Run Code Online (Sandbox Code Playgroud)

我想test_foo.cpp应该是这样的:

#include "foo.hpp"
#define BOOST_TEST_MODULE Foo test
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE( Foo_Test )

BOOST_AUTO_TEST_CASE( Foo1 )
{
    Foo f;
    BOOST_CHECK( f.isValid() );
}

BOOST_AUTO_TEST_CASE( Foo2 )
{
    Foo f;
    BOOST_CHECK( f.baz() == 5 );
}

BOOST_AUTO_TEST_SUITE_END()
Run Code Online (Sandbox Code Playgroud)

但是,我不知道(1)运行测试的实际命令是什么,以及(2)如何实际告诉库我想要运行每个测试.

那么,谁有Boost.Test的经验?有人可以详细帮助吗?非常感谢.

c++ boost unit-testing

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

C++定义跨文件常量的最佳方法

我正在开发一款游戏并且有一个有趣的问题.我有一些游戏范围的常量值,我想在一个文件中实现.现在我有这样的事情:

constants.cpp

extern const int BEGINNING_HEALTH = 10;
extern const int BEGINNING_MANA = 5;
Run Code Online (Sandbox Code Playgroud)

constants.hpp

extern const int BEGINNING_HEALTH;
extern const int BEGINNING_MANA;
Run Code Online (Sandbox Code Playgroud)

然后文件只是#include"constants.hpp"这很好用,直到我需要使用其中一个常量作为模板参数,因为外部链接的常量不是有效的模板参数.所以我的问题是,实现这些常量的最佳方法是什么?我担心简单地将常量放在头文件中会导致在每个翻译单元中定义它们.而且我不想使用宏.

谢谢

c++ templates const constants extern

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

生成分段迷宫的算法

我想生成一个如下所示的迷宫: 替代文字

也就是说,它由一个方向上的路径组成,然后连接起来.我已经找了一个算法来生成这样的迷宫而没有成功.

具体来说,我想要像这样的迷宫:

迷宫

因为它不会只在一个方向"运行".

此外,如果这个迷宫的解决方案需要玩家"回溯" - 即不是一直向上移动,那将是很好的.

language-agnostic algorithm maze

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

c ++ 11移动std :: deque或std :: list的插入

我理解rvalue引用是如何工作的,但我不确定它们如何与STL中的迭代器一起工作.这是我想要的东西:

void insertList(std::list<int>& L, std::list<int>&& R, std::list<int>::iterator insertPoint)
{
    L.insert(insertPoint, R.begin(), R.end()); // want to use move semantics
}
Run Code Online (Sandbox Code Playgroud)

现在我知道std :: list有一个splice方法.但我想知道这是否可行.它也可以用于deque吗?

c++ rvalue-reference move-semantics c++11

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

用于计算unsigned char中"1"位数的C代码

我需要C代码在C中的unsigned char中返回1的数量.如果不明显,我需要解释它为什么有效.我找到了很多32位数的代码,但对于unsigned char却没有多少代码.

c hammingweight

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

Visual Studio 2008宏在头文件和源文件之间切换?

有谁知道如何制作宏或在foo.hpp和foo.cpp之间切换的东西?我真的很感激有这样的宏.我想如果它实际上打开了相应的文件会有所帮助,但是在标签中保留旧文件.

谢谢

shortcuts visual-studio-2008 visual-studio

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

成员函数与非成员函数?

对类操作的函数应该是成员函数还是非成员函数的规则是什么?例如,我有一个使用bools矩阵表示迷宫的类.我正在创建一个名为isConnected的函数,它验证迷宫中的2个点位于同一区域(即可以从A行进到B).

这应该是会员还是非会员?什么是好规则?

c++ oop

8
推荐指数
4
解决办法
5318
查看次数

C++ 0x将不再具有概念.意见?这会对你有什么影响?

法兰克福举行的2009年7月的C++ 0x会议上,决定从C++ 0x中删除概念.就个人而言,我很失望,但我宁愿有一个可实现的C++ 0x而不是没有C++ 0x.他们说他们将在以后加入.

您对此决定/问题有何看法?它会对你有什么影响?

c++ c++11 c++-concepts

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