草庐IT

BOOST_SERIALIZATION_NVP

全部标签

c++ - boost::threads - 如何正常关机?

我正在尝试通过使用boost:threads而不是我们自己的Win32线程包装器来提高C++应用程序的可移植性,而优雅的线程终止问题(再次)又浮出水面。在纯win32上,我使用QueueUserAPC来“中断”线程抛出一个“thread_interrupt”异常,导致所有RAII对象在退出时被清理,asdescribedhere.任何“可警报”操作系统功能都可以通过这种方式中断,因此互斥等待、sleep、串行和套接字I/O等都是可能的中断点。但是,boost:mutexes等在win32上不会被QueueUserAPC“警告”——它们调用诸如Sleep(n)而不是SleepEx(n,t

c++ - 如何让 boost::iostream 以类似于 std::ios::binary 的模式运行?

我有以下关于boost::iostreams的问题。如果有人熟悉编写过滤器,我将非常感谢您的建议/帮助。我正在编写一对多字符过滤器,它们与boost::iostream::filtering_stream一起用作数据压缩器和解压缩器。我从编写压缩器开始,从lz系列中学习了一些算法,现在正在研究解压缩器。简而言之,我的压缩器将数据拆分为数据包,这些数据包分别编码,然后刷新到我的文件中。当我必须从我的文件中恢复数据时(在编程术语中,接收一个read(byte_count)请求),我必须读取一个完整打包block,缓冲它,解压它,然后才给出请求的字节数。我已经实现了这个逻辑,但现在我正在努力

c++ - 在 Visual Studio 2010 中链接 boost 库时出现问题。

我根据找到的指南编译了我的boost库here并尝试使用boost文件系统库。当我添加#include时我收到以下错误:errorLNK2028:unresolvedtoken(0A00009A)"classboost::system::error_code__clrcallboost::filesystem2::detail::dir_itr_close(void*&)"(?dir_itr_close@detail@filesystem2@boost@@$$FYM?AVerror_code@system@3@AAPAX@Z)referencedinfunction"public:__

c++ - 任何可用的实现,如 Loki 的 AssocVector,但具有 Boost 的 Bimap 的功能?

我想知道是否有人知道任何库代码具有Loki的AssocVector提供的性能特征(元素引用的局部性,与映射相比每个元素的内存开销更低)但具有Boost的BiMap功能(能够查询关系两侧的map)?或者使用std::pairs的排序std::vector并添加功能以使用对中的任一元素作为键来查找vector是前进的方向吗? 最佳答案 这实际上取决于您想快速完成的操作。Loki::AssocVector的插入和删除复杂度为O(n),而boost::bimap与hash一起使用时的复杂度为O(1)表。如果您可以在数据结构的一个“View”

c++ - boost 拆分字符串

如何在不复制字符串的情况下拆分? 最佳答案 您可以使用C++0x或C++98TR1中定义的std::regex-这会将迭代器返回到字符串中(嗯,无论如何,在外观后面)-所以它不会'涉及复制字符串。C++0x正则表达式变体支持提取匹配项和拆分(提取不匹配项)——因此它是strtok的完全替代品,具有很多额外的功能。参见JohnCook'swebpage例如,wikipedia或videobyStephanTLavavej.您可能需要使用boost::regex直到C++0x被更广泛地实现;两者兼容。

c++ - boost multi_index : retrieve unique values of a non-unique key

我有一个boost::multi_index_container其元素是这样的结构:structElem{Aa;Bb;Cc;};主键(在数据库意义上)是a和b的composite_key。其他键的存在是为了执行各种类型的查询。我现在需要检索一组c的所有不同值。这些值是无论如何不是唯一的,而是遍历所有条目(尽管是有序的),或者使用std::unique似乎很浪费,考虑到c的不同值的数量预计将我是否缺少更有效地获得此结果的简单方法? 最佳答案 我搜索了Boost.MultiIndex文档,但似乎无法找到一种方法来执行您想要的操作。我很想

c++ - boost::dynamic_bitset 连接性能

我想以一种不会降低性能的方式连接一个大的位集和一个较小的位集。目前,我的应用程序仅在以下代码中就花费了20%的CPU时间:boost::dynamic_bitsetencode(conststd::vector&data){boost::dynamic_bitsetresult;std::for_each(data.begin(),data.end(),[&](unsignedcharsymbol){for(size_tn=0;n我读过这个post它提出了一个解决方案,不幸的是,它对我不起作用,因为目标位集和源位集的大小差异非常大。有什么想法吗?如果使用boost::dynamic_b

c++ - 将 boost::format %s 说明符与 UTF-8 字符串一起使用

我们正在为具有大型代码库的现有应用程序添加对UTF8的支持。此应用程序使用boost::format(),非ASCII字符的输出未正确对齐。具体来说,当使用%{width}.{length}s说明符时,boost::format()会计算字符数,这对于utf8来说不是“做正确的事”字符串。我认为应该可以更改字符串长度代码(可能是string::size())以使用utf8len()或类似的东西,基于……什么?在这种情况下,更改现有代码库以使用UCS2(或UCS4,或UTF-16等)是不切实际的,但可以修改boost::format()如有必要。我希望其他人遇到过这种需求,并能指出一个可

c++ - 具有关联属性的 boost::hash_combine 的替代方案?

我正在寻找具有关联属性的hash_combine函数。例如,我希望能够依次组合值a、b、c、d以获得序列的哈希键,或者组合a和b,然后组合c和d,然后组合结果。这两种方法应该给出相同的结果。boost::hash_combine没有那个属性://a*b*c*dstd::size_tseed=0;boost::hash_combine(seed,234);boost::hash_combine(seed,62);boost::hash_combine(seed,675);boost::hash_combine(seed,916);std::cout有什么好的hash_combine函数吗

c++ - 使用 boost 1.36 和 C++ 的 RHEL4 版本问题

我正在为一个神秘的问题而苦苦挣扎我只在我的RHEL4发布版本上看到。我的一些单元测试(使用boost1.36单元测试框架)在RHEL4(gcc3.4.6)上失败并使用发布构建类型。我没有看到使用RHEL5版本或调试构建类型(gcc4.1.2、boost-1.39)的问题;我也不使用VisualStudio2005(使用boost-1.36)或2008(使用boost-1.39)在Windows32位或64位上查看它。怀疑这可能是由于一些微妙的内存问题,我继续在测试应用程序上运行valgrind(保留问题的最小情况)。这是我使用“完全,不可访问”模式运行valgrind时得到的结果:==