我试图让我的头绕着元组(谢谢@litb),而他们使用的常见build议是函数返回> 1值。 这是我通常使用一个结构的东西,我不明白在这种情况下元组的优点 – 这似乎是一个容易出错的方法为最后懒惰。 借用一个例子 ,我会用这个 struct divide_result { int quotient; int remainder; }; 使用元组,你会有 typedef boost::tuple<int, int> divide_result; 但是如果没有阅读你所调用函数的代码(或者注释,如果你足够愚蠢的信任它们),你不知道哪个int是商,反之亦然。 这似乎相当… struct divide_result { int results[2]; // 0 is quotient, 1 is remainder, I think }; …这不会使我充满信心。 那么,元组对结构的优点是什么,弥补了模糊性?
我多次构build了x86 Boost库,但似乎无法构buildx64库。 我启动“Visual Studio 2005 x64交叉工具命令提示符”,并运行我平时的构build: bjam –toolset=msvc –build-type=complete –build-dir=c:\build install 但它仍然会生成x86 .lib文件(我用dumpbin / headersvalidation了这一点)。 我究竟做错了什么?
我很困惑如何实际创build一个graphics使用boost库,我已经看了示例代码,并没有解释它是什么意见。 你如何做一个graphics,并添加顶点和边缘?
我想使用BOOST_FOREACH遍历一个std :: map并编辑值。 我不太明白。 typedef std::pair<int, int> IdSizePair_t; std::map<int,int> mmap; mmap[1] = 1; mmap[2] = 2; mmap[3] = 3; BOOST_FOREACH( IdSizePair_t i, mmap ) i.second++; // mmap should contain {2,3,4} here 当然,这不会改变任何东西,因为我不是通过引用迭代。 所以我用这行代替(按照Boost文档中的例子): BOOST_FOREACH( IdSizePair_t &i, mmap ) 我得到的编译器错误: error C2440: 'initializing' : cannot convert from 'std::pair<_Ty1,_Ty2>' to 'IdSizePair_t &' with [ _Ty1=const int, _Ty2=int […]
我正在尝试构buildBoost C ++库最近两个小时,并停止没有任何结果。 由于我是C ++的新手,我无法获得正确的构build。 我如何使用Visual Studio 2008正确构build它? 我需要使用BCP工具来提取库的一个子集。 所以我需要先build立BCP,对吗? 这个怎么做? 当我试图build立它,我得到了以下错误 致命错误LNK1104:无法打开文件'libboost_filesystem-vc90-mt-gd-1_37.lib'。 我在哪里可以得到上面给出的库文件?
使用gdb进行debugging,任何使用STL / boost的c ++代码仍然是一个噩梦。 任何使用STL的gdb都知道这一点。 例如,请参阅代码中的一些debugging会话的示例运行。 我试图通过收集提示来减轻痛苦。 能否请您对我在下面收集的提示发表意见(尤其是您已经使用过哪些build议,以及对build议的更改) – 我列出了提示是技术性降序。 有人使用“斯坦福GDB STL实用程序”和“UCF GDB实用程序” ? 是否有一些这样的使用提升数据结构? 上面的utils似乎不是可recursion使用的,例如在一个命令中以可读的方式打印boost :: shared_ptr的向量。 编写你的.gdbinit文件。 包括例如C ++相关的美化器,列在UCF GDB utils的底部。 使用选中/debuggingSTL / Boost库,如STLport。 使用日志logging(例如这里所描述的) 更新 :GDB有一个新的C ++分支 。
boost::tuple有一个get()成员函数,像这样使用: tuple<int, string, string> t(5, "foo", "bar"); cout << t.get<1>(); // outputs "foo" 看来C ++ 0x std::tuple没有这个成员函数,你必须使用非成员函数的forms: std::get<1>(t); 这对我来说看起来很丑。 为什么std::tuple没有成员函数有什么特别的理由? 还是只是我的实现(GCC 4.4)?
我试图序列化使用boost属性树write_json,它将所有的东西保存为string,这不是数据是错误的,但我需要每次明确地投下他们,我想在别的地方使用它们。 (就像在Python或其他C ++ json(非boost)库) 这里是一些示例代码和我得到的取决于区域设置: boost::property_tree::ptree root, arr, elem1, elem2; elem1.put<int>("key0", 0); elem1.put<bool>("key1", true); elem2.put<float>("key2", 2.2f); elem2.put<double>("key3", 3.3); arr.push_back( std::make_pair("", elem1) ); arr.push_back( std::make_pair("", elem2) ); root.put_child("path1.path2", arr); std::stringstream ss; write_json(ss, root); std::string my_string_to_send_somewhare_else = ss.str(); 和my_string_to_send_somewhere_else是。 喜欢这个: { "path1" : { "path2" : [ { "key0" : "0", "key1" : "true" }, { "key2" […]
我正在尝试用最新的msvc 14.1和VS2017 RC来提升1.63。 所以我做了我通常所做的一切,打开了Development Cmd,然后运行bootstrap.bat并运行命令 b2 -link=static -threading=multi 出于某种原因,我得到了这些错误: E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:834: in generate-setup-cmd *** argument error * rule maybe-rewrite-setup ( toolset : setup-script : setup-options : version : rewrite-setup ? ) * called with: ( msvc : : : default : ) * missing argument setup-script E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:746:see definition of rule 'maybe-rewrite-setup' being called E:/Coding/SDKs/boost_1_63_0/tools/build/src/tools\msvc.jam:1076: in configure-really […]
我在Boost.Any和Boost.Variant之间select有困难。 我应该什么时候使用每一个? 每个的优点和缺点是什么? 我基本上是想从外部储存一些州。