Questions tagged «boost»

Boost是大量用于C ++的高质量库的集合。Boost是免费的,通常被视为“第二标准库”。


11
使用C ++ Boost库有什么优势?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 因此,我一直在阅读,看来Boost库在实践中得到了很多使用(尽管不是在我的商店里)。为什么是这样?是什么让它如此美妙?
122 c++  boost 


6
提高boost_shared_mutex的示例(多次读取/一次写入)?
我有一个多线程应用程序,该应用程序必须经常读取一些数据,并偶尔更新数据。现在,互斥锁可以确保对数据的安全访问,但是这很昂贵,因为我希望多个线程能够同时读取,并且仅在需要更新时才将它们锁定(更新线程可以等待其他线程完成)。 。 我认为这是boost::shared_mutex应该做的,但是我不清楚如何使用它,也没有找到明确的例子。 有人有我可以用来入门的简单示例吗?

2
boost :: algorithm :: join的一个很好的例子
我最近想使用boost :: algorithm :: join,但是我找不到任何用法示例,也不想花很多时间学习Boost Range库只是为了使用这一功能。 谁能提供一个很好的示例,说明如何在字符串容器上使用join?谢谢。
116 c++  string  boost  join 

25
Boost的最常用零件
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 当我发现boost::lexical_cast自己时,心想:“为什么我不早知道呢!” -我讨厌像这样写代码 stringstream ss; ss << anIntVal; mystring = ss.str(); 现在我写 mystring = boost::lexical_cast<string>(anIntVal); 昨天,在stackoverflow上,我遇到了boost split(另一个可以节省我编写代码的宝石)。 string stringtobesplit = "AA/BB-CC") vector<string> tokens; boost::split(tokens, stringtobesplit, boost::is_any_of("/-")); // tokens now holds 3 items: AA BB CC 我将开始浏览boost文档,寻找可以经常使用的其他功能,但是我觉得很容易错过一些东西。 您最常使用/什么讨厌的增强功能?
115 c++  boost 

17
C ++-传递对std :: shared_ptr或boost :: shared_ptr的引用
如果我有一个需要使用的函数shared_ptr,将其传递给它引用不是更有效(这样可以避免复制shared_ptr对象)?可能的不良副作用是什么?我设想了两种可能的情况: 1)在函数内部复制参数,例如 ClassA::take_copy_of_sp(boost::shared_ptr<foo> &sp) { ... m_sp_member=sp; //This will copy the object, incrementing refcount ... } 2)在函数内部仅使用参数,例如 Class::only_work_with_sp(boost::shared_ptr<foo> &sp) //Again, no copy here { ... sp->do_something(); ... } 在两种情况下,我都看不出有理由boost::shared_ptr<foo>按值传递而不是按引用传递。传递值只会由于复制而“临时”增加引用计数,然后在退出功能范围时减少引用计数。我在俯视什么吗? 为了澄清,在阅读了几个答案之后:我完全同意过早优化的问题,并且我总是尝试先介绍热点,然后再进行热点工作。如果您知道我的意思,我的问题更多是从纯粹的技术代码角度来看。

4
`const shared_ptr <T>`和`shared_ptr <const T>`之间的区别?
我正在为C ++中的共享指针编写访问器方法,该方法如下所示: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } 因此,要支持getBar()return类型的常量性,应boost::shared_ptr防止Bar它指向的修改。我的猜测是shared_ptr&lt;const Bar&gt;要返回该类型的类型,而const shared_ptr&lt;Bar&gt;这将防止指针本身重新分配以指向不同的对象,Bar但允许Bar对其指向的对象进行修改。但是,我不确定。如果知道的人可以确认这一点,或者如果我弄错了,请更正我,我将不胜感激。谢谢!
115 c++  boost  const  shared-ptr 

23
获取可执行文件的路径
我知道以前曾问过这个问题,但是我仍然没有看到满意的答案,也没有明确的“不,这不能完成”,所以我再问一次! 我要做的就是以独立于平台的方式获取当前正在运行的可执行文件的路径,可以是绝对路径,也可以是相对于调用可执行文件的位置的路径。虽然我boost :: filesystem :: initial_path是我的麻烦的答案,但这似乎只能处理问题的“与平台无关”的部分-它仍然返回从中调用应用程序的路径。 出于某种背景,这是一个使用Ogre的游戏,我正在尝试使用Very Sleepy进行概要分析,该应用程序从其自己的目录中运行目标可执行文件,因此,当然,在加载时,游戏找不到任何配置文件等,并立即崩溃。我希望能够将其传递给配置文件的绝对路径,我知道它将始终与可执行文件一起存在。在Visual Studio中进行调试也是如此-我希望能够在不必设置工作目录的情况下运行$(TargetPath)。
114 c++  boost  executable 

6
如何使用CMake将C ++程序与Boost链接
将程序与Ubuntu下的Boost库链接时,我的CMake文件应该是什么样子? 运行期间显示的错误make: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' 主文件非常简单: #include &lt;boost/program_options/options_description.hpp&gt; #include &lt;boost/program_options/option.hpp&gt; using namespace std; #include &lt;iostream&gt; namespace po = boost::program_options; int main(int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ; return 0; } 我已经做到了。我添加到CMake文件中的唯一行是: target_link_libraries( my_target_file ${Boost_PROGRAM_OPTIONS_LIBRARY} )
109 c++  boost  cmake 


4
shared_ptr在哪里?
几个小时后试图找到shared_ptr的位置后,我现在感到非常沮丧。我看到的所有示例都没有显示完整的代码来包含shared_ptr(和正在运行的)标题。简单的声明std,tr1并&lt;memory&gt;在一切都没有帮助!我已经下载了增强功能,但仍然没有显示!有人可以告诉我在哪里可以找到我吗? 感谢您让我发泄挫败感! 编辑:我看到我的标题已更改。对于那个很抱歉。所以...这也是因为我不清楚shared_ptr是否“依赖C ++版本”-&gt;这就是为什么我没有声明我的环境-&gt;因此可能为什么我很难找到它。 我正在使用MSVS2008。 编辑2:我不知道为什么,但是当我到处寻找shared_ptr时,我包括了[memory]和[boost / tr1 / memory.hpp]和[boost / tr1 / tr1 / memory]。没错 感谢您的所有回复。

2
boost :: flat_map及其与map和unordered_map相比的性能
编程中的常识是,由于缓存命中,内存局部性可以大大提高性能。我最近发现了boost::flat_map哪个是基于矢量的地图实现。它似乎不像您典型的map/ 那样流行,unordered_map因此我无法找到任何性能比较。它如何比较?最佳的用例是什么? 谢谢!
103 c++  boost  map 

3
是否将shared_ptr <Base>向下转换为shared_ptr <Derived>?
更新:此示例中的shared_ptr类似于Boost中的shared_ptr,但它不支持shared_polymorphic_downcast(或者对于此问题,不支持dynamic_pointer_cast或static_pointer_cast)! 我正在尝试初始化指向派生类的共享指针,而不会丢失引用计数: struct Base { }; struct Derived : public Base { }; shared_ptr&lt;Base&gt; base(new Base()); shared_ptr&lt;Derived&gt; derived; // error: invalid conversion from 'Base* const' to 'Derived*' derived = base; 到目前为止,一切都很好。我没想到C ++会将Base *隐式转换为Derived *。但是,我确实想要代码表示的功能(即在向下转换基本指针的同时保持引用计数)。我的第一个想法是在Base中提供一个强制转换运算符,以便可以隐式转换为Derived(对于pedants:我会检查向下强制转换是否有效,不用担心): struct Base { operator Derived* (); } // ... Base::operator Derived* () { return down_cast&lt;Derived*&gt;(this); } …
102 c++  gcc  boost 

7
加权随机数
我正在尝试实现加权随机数。我目前只是把头撞在墙上,无法解决这个问题。 在我的项目(Hold'em手范围,主观全能分析)中,我正在使用Boost的随机函数。因此,假设我要选择1到3之间的一个随机数(所以选择1、2或3)。Boost的mersenne扭曲生成器为此发挥了魅力。但是,我希望例如这样对选秀权进行加权: 1 (weight: 90) 2 (weight: 56) 3 (weight: 4) Boost是否为此具有某种功能?
101 c++  boost  random 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.