草庐IT

iter_entry_points

全部标签

c++ - std::atomic<std::chrono::high_resolution_clock::time_point> 无法编译

我需要std::chrono::high_resolution_clock::time_point我想从一个线程写入并从另一个线程读取的字段。如果我声明它是我的代码编译没有任何错误。但为了让我的字段在另一个线程中可见,我用std::atomic将其包围像这样std::atomic现在我有以下编译错误:/usr/include/c++/4.8/atomic:167:7:error:function‘std::atomic::atomic()[with_Tp=std::chrono::time_point>>]’defaultedonitsfirstdeclarationwithanexc

c++ - 在某些情况下,std::is_floating_point 为 float 返回 false

在某些情况下,请参见下面的一个示例,std::is_floating_point正在返回false对于float.#include#include#includeintmain(){::std::cout()[::std::vector().size()])).name()()[::std::vector().size()])>::value){::std::cout来自GCC的输出fnotfloatingpoint在本例中,可以看到typeid认为::std::vector()[::std::vector().size()]作为float因为它返回正确的名称。还可以检查typeid(

c++ - 为什么 vector::iterator 在重新分配时无效?

我不明白为什么在重新分配发生时vector的迭代器应该失效。难道不能简单地通过在迭代器中存储一个偏移量——而不是一个指针——来防止这种情况吗?为什么vector不是这样设计的? 最佳答案 只是为与性能相关的理由添加一个引用:在设计C++时,Stroustrup认为模板类如std::vector是至关重要的。接近原生数组的性能特点:Onereasonfortheemphasisonrun-timeefficiency...wasthatIwantedtemplatestobeefficientenoughintimeandspacet

c++ - 将 std::list<>::iterator 的值指向指针?

如何循环通过STL::List并存储其中一个对象的值以供稍后在函数中使用?Particle*closestParticle;for(list::iteratorp1=mParticles.begin();p1!=mParticles.end();++p1){//ExtrastuffremovedclosestParticle=p1;//failstocompile(editfromcomments)} 最佳答案 要么Particle*closestParticle;for(list::iteratorit=mParticles.be

c++ - 我应该如何在 API 中替换 vector<uint8_t>::const_iterator?

我的任务是完善编解码器库的界面。我们使用的是C++17,我只能使用标准库(即没有Boost)。目前,有一个Decoder大致如下所示的类:classDecoder:publicCodec{public:structResult{vector::const_iteratornew_buffer_begin;optionalmetadata;optionalpacket;};Resultdecode(vector::const_iteratorbuffer_begin,vector::const_iteratorbuffer_end);private://irrelevantdetails

c++ - 两个 time_point 实例之间的差异不是持续时间吗?

我不明白为什么这段代码会被g++4.7.2卡住:#includemain(){std::chrono::system_clock::time_pointt1,t2;std::chrono::secondsdelay;t1=std::chrono::system_clock::time_point::max();t2=std::chrono::system_clock::now();delay=t1-t2;//t1=t2+delay;//t1=t2-delay;}出现错误:test.cc:Infunction‘intmain()’:test.cc:10:18:error:nomatchf

C++ 迭代器到 const_iterator

如何在C++中从iterator(该容器类的)获取一个const_iterator(某个容器类的)?insert_iterator中的const_iterator怎么样?生成的iterator应该指向与原始位置相同的位置。 最佳答案 容器需要提供iterator作为可转换为const_iterator的类型,因此您可以隐式转换:Container::iteratorit=/*blah*/;Container::const_iteratorcit=it;std::insert_iterators是输出迭代器。这无法将它们转换为必须是前

c++ - partition_point 和 lower_bound 有什么区别?

C++11包含算法std::partition_point().然而,对于我尝试过的所有情况,它给出的答案与std::lower_bound()相同。.唯一的区别是方便的T&value参数。我是否遗漏了什么,或者这两个函数做的事情或多或少是一样的? 最佳答案 它们基本上是等价的。这将是lower_bound的有效实现。:templateForwardIteratorlower_bound(ForwardIteratorfirst,ForwardIteratorlast,Tconst&value){returnpartition_po

c++ - iterator_trait 的典型用例是什么

我是C++新手,所以请多多包涵。我想了解STLiterator_traits.在“C++标准库”一书中,结构iterator_traits定义如下:templatestructiterator_traits{typedeftypenameT::value_typevalue_type;typedeftypenameT::difference_typedifference_type;typedeftypenameT::iterator_categoryiterator_category;typedeftypenameT::pointerpointer;typedeftypenameT::

C++ 双端队列 : when iterators are invalidated

如果我错了,请纠正我。谢谢!insert和erase将重定位元素,但插入/删除发生位置之前的元素不会重定位,因此它们的迭代器仍然有效。push_back和pop_back不会使任何迭代器失效。push_front和pop_front使所有迭代器无效。swap不会重新定位元素,但不知何故我认为它应该使迭代器无效。 最佳答案 push_back()和push_front()是根据insert()定义的。类似地,pop_back()和pop_front()是根据erase()定义的。以下是C++03标准关于insert()(23.2.1.