草庐IT

boost-move

全部标签

c++ - 在几分钟内构建所有的 Boost

谁能解释为什么要遵循这些说明:http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install...构建所有Boost需要我像样的机器5个小时,而somefolks报告说只用了3分钟做了同样的事情?除了上面提到的方法之外,还有另一种构建Boost的方法确实非常快(与几个小时相比,无论如何)。我在Darwin(Mac)选项上使用Clang编译器。不确定它有多重要,但我有16GBRAM和最新的SSD。时钟频率为2.3Ghz。编辑:我很高兴地报告,根据评论和答

c++ - unix 时间戳到 boost::posix_time::ptime

我需要将自纪元以来的秒数转换为ptime。我很确定一定有一种简单的方法可以做到这一点,但我找不到任何东西。谢谢。编辑:原来的时间戳是float。我无法更改它,也不想失去亚秒级精度。 最佳答案 使用from_time_t()转换功能。time_t是UNIX时间戳,即自纪元以来的秒数。 关于c++-unix时间戳到boost::posix_time::ptime,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 使用或不使用 boost::bind() 创建一个 boost::thread

有些人似乎使用boost::bind()函数启动boost::threads,例如在以下问题的公认答案中:Usingboostthreadandanon-staticclassfunction而其他人根本不使用它,例如在这个问题中获得最多赞成票的答案:BestwaytostartathreadasamemberofaC++class?那么,如果存在差异,那有什么区别呢? 最佳答案 从下面编译并给出预期输出的代码可以看出,boost::bind对于将boost::thread与自由函数、成员函数和静态成员函数一起使用是完全不必要的:#

c++ - 为什么 Boost MPL 有整数常数?

既然您可以将整数值作为模板参数并对它们执行算术运算,那么boost::mpl::int_和其他整数常量背后的动机是什么?这种动机是否仍然适用于C++11? 最佳答案 您可以将整数值作为模板参数,但您不能在一个模板中同时使用类型和非类型模板参数。长话短说,将非类型模板参数视为类型允许它们与MPL中的无数事物一起使用。例如,考虑一个元函数find它与类型一起使用并在序列中寻找相同的类型。如果您希望将它与非类型模板参数一起使用,您需要重新实现新算法“重载”,find_c为此,您必须手动指定整数值的类型。现在假设您希望它像其他语言一样使用混

c++ - boost C++ 无锁队列与共享队列

我是多线程编程的新手,我只知道最常见的Producer-Consumer-Queue。我正在使用boostc++库,我不知道是使用boost::lockfree::queue还是使用`mutex`和`condition_variable`的std::queue周围的包装类更好。哪里使用无锁数据结构更好,哪里使用基于`mutex`和`condition_variables`的简单实现更好? 最佳答案 在您的应用中尝试两者,看看哪个表现最好。通常,轮询无锁队列在队列几乎总是有条目时效果最好,而阻塞队列在队列几乎总是空的时候效果最好。由于

c++ - 为什么人们似乎暗示我宁愿不使用 Boost?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion我经常在这里看到关于boost的注释,例如IfyouarefinewithusingBoost...或IfyoucanuseBoost...我想知道,这到底是怎么回事?我应该厌倦什么?我什么时候不能使用boost?不用boost的原因有哪些?在我看来,boost是对STL的一个很好的扩展;有时非常重量级和笨拙,但仍然很棒。我并不是真的征求有关boost的意见。我宁愿寻找一些具体的例子,在使

c++ - 对于可 move 类型,删除 std::vector 中间的元素仍然很昂贵吗?

通常认为删除std::vector中间的元素代价高昂,因为它需要复制它之后的每个元素来填充空洞。在C++11中,std::vector将向下move所有元素,这应该非常快(如果仅与拷贝相关),至少我是这么认为的。当然,它在时间上仍然是线性的,但总的来说它应该比旧版本更快。这是真的吗?我再也不用担心删除中间的某些对象了吗? 最佳答案 这取决于vector中的内容。如果它是POD或指针,我无法想象它会有什么不同。如果类实例复制起来很繁重,但可以非常快速地move,我希望使用C++0x可以加速。但是,我认为如果从std::vectors中

c++ - 如何停止/中断 boost::thread?

我在一个函数中创建了一个线程,在另一个函数中,我想停止这个线程。我试过这样:classServer{private:boost::thread*mPtrThread;...public:voidcreateNewThread(){boost::threadt(...);mPtrThread=&t;}voidstopThread(){mPtrThread->interrupt();}}但它不起作用。我怎样才能停止线程? 最佳答案 如果你想使用interrupt()你应该定义interruptionpoints.线程一旦到达中断点之一,

c++ - move 语义 - 它是关于什么的?

这个问题在这里已经有了答案:10年前关闭。PossibleDuplicate:Cansomeonepleaseexplainmovesemanticstome?有人可以给我指出一个好的来源或在这里解释什么是move语义? 最佳答案 暂时忘记C++0x。move语义是独立于语言的东西——C++0x仅仅提供了一种标准方式来执行move语义操作。定义move语义定义了某些操作的行为。大多数情况下,它们与复制语义形成对比,因此首先定义它们会很有用。与的分配复制语义具有以下行为://Copysemanticsassert(b==c);a=b;

C++11 std::shared_ptr + boost::序列化

这个问题在这里已经有了答案:Howcanboost::serializationbeusedwithstd::shared_ptrfromC++11?(7个答案)boostserializeandstd::shared_ptr(2个答案)关闭9年前。嗨,有人已经成功地使用boost::serialization序列化了C++11std::shared_ptr。那里有很多过时的帖子,但没有一个具有可接受的解决方案。我不打算讨论为什么我要使用std::shared_ptr只是接受它!我找到了另一个帖子:boostserializeandstd::shared_ptr但它没有回答我如何序列化