草庐IT

STD_LOGIC_VECTOR

全部标签

c++ - 使用 std::accumulate 计算 vector 元素总和的最准确方法是什么?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++floatprecisionquestion我遇到了一个问题,即使用std::accumulate确定三种方法中最精确的方法来计算vector元素之和,vector元素之和只能是正数。1)doublesum(vector&v){returnaccumulate(v.begin(),v.end(),0.0);}2)doublesum(vector&v){sort(v.begin(),v.end());returnaccumulate(v.begin(),v.end(),0.0);}3)doublesum(

c++ - 在 std::pair 中存储不可复制(但可 move )的对象

我正在尝试将不可复制(但可move)的对象存储在std::pair中,如下所示:#includestructS{S();private:S(constS&);S&operator=(constS&);};intmain(){std::pairp{0,S()};return0;}但是我在使用gcc4.6时遇到以下编译器错误:Infileincludedfrominclude/c++/4.6.0/bits/move.h:53:0,frominclude/c++/4.6.0/bits/stl_pair.h:60,include/c++/4.6.0/utility:71,fromsrc/tes

c++ - 将数据序列化到 std::streambuf

我有一个VisualStudio2008C++项目,我在其中尝试将来自多个类的数据序列化为自定义std::streambuf实现。数据类及其序列化:structHeader{/*...*/};inlinestd::ostream&operatorstreambuffer实现提供缓冲的i/o并覆盖underflow和overflow。classMyStreamBuf:publicstd::streambuf{public:MyStreamBuf(){InitBuffers();};private:voidInitBuffers(){recv_buffer_.resize(buff_siz

c++ - 是否有一个 vector 可以处理非标准位长的整数?

我正在寻找类似于STLvector但可以处理整数的东西,例如12、16、20、24、32和40位长。vector很好地处理了16位和32位的情况。和vector,但我还没有找到任何方法来处理其他的。请注意,这样做的全部目的是节省内存和带宽,因此填充不是一种选择。我的数据结构可以推断出整数的最高有效位(即int64),因此我只想存储LSB。每整数位数和整数个数在创建时已知,但在编译时未知。理想情况下,每整数位数可以是12到40之间的任何值,但出于性能原因或使用需要在编译时设置每整数位数的结构,层是可以的。vector和dynamic_bitset可以创建位域,但它们仅限于1位整数。有人知

c++ - boost::interprocess::basic_string 作为 std::string

我正在尝试用constboost::interprocess::basic_string&替换返回conststd::string&的类方法。我面临的主要挑战是这两个类之间的不兼容性,尽管它们的实现相似。为了更清楚的解释,我将把它放入代码中classA{std::stringm_str;conststd::string&StrVal(){returnm_str;}}现在这个类看起来像这样:typedefboost::interprocess::allocatorShmemAllocatorChar;typedefboost::interprocess::basic_string,Shm

c++ - 指针 vector

如果我在类头中有这样的定义:vectorbaddies;然后我在构造函数中初始化如下:Class::Class(vectorinput){baddies=input;}我最终会得到什么?有两组指向对象的指针的两个vector?简单地指向原始vector会更好吗?这可能吗?或者在类中保存一个指针引用vector以避免重复指针会更好吗?访问多个类中的对象和对象数组的最佳实践是什么?引用?指针?指针引用?提前致谢! 最佳答案 这取决于您要提供的语义。在C++11中,您可能想要做的是:Class::Class(vectorinput):ba

c++ 我可以将 std::unique_ptr 与依赖注入(inject)一起使用吗?

我一直在使用原始指针进行依赖注入(inject),因此我决定将我的代码转换为使用shared_ptr。这行得通,但我想知道我是否可以改用unique_ptr?在我下面的示例中,MyClass将管理信用卡服务的生命周期。classPaymentProcessor{PaymentProcessor(??creditCardService)::creditCardService_(creditCardService){}private:CreditCardService*creditCardService_;}classMyClass{public:voidDoIt(){creditCard

c++ - 如何找出 nviews vector 的返回类型

我有以下问题:template/*whatisthereturntype*/nviewgetter(Tconst&t){typenameT::const_iteratorit(t.begin());typedefBOOST_TYPEOF_TPL(*it)etype;typedeftypenameboost::fusion::result_of::as_nview::typenetype;std::vectorr;while(it!=t.end()){r.push_back(boost::fusion::as_nview(*it));it++;}//returnr;}预期的是T是前向序列

c++ - 未捕获的 std::exception 在核心中不正确的堆栈跟踪

这是我的代码:#include#includeusingnamespacestd;usingnamespacestd::tr1;usingnamespacestd::tr1::placeholders;classEvent{public:typedefstd::tr1::functionHandler;voidset(Handlerh){m_handler=h;}templatevoidset(T*obj,Fmemfn){set(std::tr1::bind(memfn,obj));}voidoperator()(){m_handler();}staticvoidfire(Event*

c++ - 获取单个平面中两个 vector 之间角度的有效方法?

如果我知道vector的x和z值将相同,因此我只关心测量y平面差异的“垂直”角度,与计算点积相比,是否有更有效的方法来做到这一点?我目前使用点积法的代码如下:floata_mag=a.magnitude();floatb_mag=b.magnitude();floatab_dot=a.dot(b);floatc=ab_dot/(a_mag*b_mag);//clampdtofromgoingbeyond+/-1asacos(+1/-1)resultsininfinityif(c>1.0f){c=1.0;}elseif(c我希望能够去掉这些平方根 最佳答案