草庐IT

vector_double

全部标签

C++ - 如何正确地将 double 转换为 int

我目前正在编写一个需要对平方根取底的程序。因为我取平方根的值是正数,所以我只是将它转换为int。所以说下面的例子:inti=16;intj=std::sqrt(i)j应该是4。不过我想知道,sqrt是否有可能返回3.9999999991而不是4.000000001或其他什么,而j的结果是3?是否有定义浮点行为的规则?我怎样才能正确地将其转换为int? 最佳答案 几乎所有广泛使用的硬件都使用IETF754float,尽管C++不需要它。假设IETF754float和::std::sqrt到IETF754浮点平方根运算的直接映射,您可以

C++初阶:容器(Containers)vector常用接口详解

介绍完了string类的相关内容后:C++初阶:适合新手的手撕string类(模拟实现string类)接下来进入新的篇章,容器vector介绍:文章目录1.vector的初步介绍2.vector的定义(constructor)3.vector迭代器(iterator)4.vector的三种遍历4.1正常for循环4.2范围for循环4.3两种迭代器(正向和反向)5.vector扩容相关(resize和reserve)5.2reserve()5.2resize()6.vector增删查改6.1push_back和pop_back6.2find、Insert、erase6.3swap1.vecto

c++ - 交换 float 和 double 的 "endianness"

我想切换float和double值的“字节顺序”,它可以正常工作,方法如下:floatconstv{1.f};swap(reinterpret_cast(v));是否有更好的方式来进行交换,无需强制转换?编辑:swap()是gcc内置函数的C++包装器,我没有在此处包含它。uint16_t__builtin_bswap16(uint16_tx)uint32_t__builtin_bswap32(uint32_tx)uint64_t__builtin_bswap64(uint64_tx)某些数据格式需要字节顺序交换,例如CBOR。 最佳答案

C++11 将 shared_ptr 转换为 vector 和类

我正在尝试将转换应用到shared_ptr并存储到shared_ptr,同时还在类中使用函数。我创建了这个例子:#include#include#include#includeusingnamespacestd;classMyClass{public:intfactor=0;MyClass(constintfactor_):factor(factor_){}shared_ptr>mult(shared_ptr>numbers){shared_ptr>result(newvector());transform(numbers->begin(),numbers->end(),result-

c++ - 我可以在不复制的情况下将 std::vector<char> 重新解释为 std::vector<unsigned char> 吗?

我引用了std::vector我想用作接受std::vector的函数的参数.我可以不复制就这样做吗?我有以下功能并且有效;但是我不确定是否真的发生了复制-有人可以帮助我理解这一点吗?是否可以使用std::move以避免复制还是它已经没有被复制?staticvoidshowDataBlock(boolusefold,boolusecolor,std::vector&chunkdata){char*buf=chunkdata.data();unsignedchar*membuf=reinterpret_cast(buf);std::vectorvec(membuf,membuf+chun

c++ - push_back 到 vector c++ 时出现段错误

我正在尝试使用push_back方法将空白对象附加到列表。主要.cppvectorfacial_memory;printf("2\n");//Addpeoplefacememoriesbasedonnumberofsectionsfor(inti=0;i在push_back方法调用中,程序因段错误而崩溃。我环顾了类似的问题,他们指出了我在这里的解决方案。我也尝试将FacialMemory()传递到push_back调用中,但仍然是同样的问题。FacialMemory类定义如下:面部内存.hclassFacialMemory{private:vectorface_memory;publi

c++ - 使用 const 成员对自定义对象的 vector 进行排序

我想对包含const类对象的vector进行排序成员变量。不幸的是,我收到一条错误消息,指出“没有匹配函数来调用“swap””。当我删除const的关键字id,然后std::sort()适用于重载的operator和自定义比较功能。为什么会这样?我通常可以不对属于具有const成员变量的类的对象进行排序吗?#include#include#includeusingnamespacestd;structA{constintid;A(intid):id(id){}booloperatorvec;vec.emplace_back(3);vec.emplace_back(0);vec.empl

python - 通过 Cython(回调)将 Python 函数应用于 std::vector

我正在尝试学习如何通过Cython在C和Python之间使用回调,并且一直在查看thisdemo.我想要一个Python函数应用于一个std::vector/numpy.array并将结果存储在另一个中。我可以毫无错误地编译和运行,但最终vectory是没有被改变。C++头文件//callback.hpp#includetypedefdouble(*Callback)(void*apply,double&x);voidfunction(Callbackcallback,void*apply,vector&x,vector&y);C++源代码//callback.cpp#include"

c++ - SSE vector 的对齐和未对齐加载和存储 - 如何减少代码重复?

我常常被迫编写两个使用SSE指令的函数实现,因为输入和输出缓冲区可能对齐或不对齐地址:voidsome_function_aligned(constfloat*src,size_tsize,float*dst){for(size_ti=0;i和voidsome_function_unaligned(constfloat*src,size_tsize,float*dst){for(size_ti=0;i还有一个问题:如何减少代码重复,因为这些功能几乎相等? 最佳答案 这里有一个广泛使用的解决方案(http://simd.sourcef

c++ - 在 std::vector C++ 中存储许多元素

对于我的一个应用程序,我需要生成大小为2^35的vector(我的RAM大小为96GB,因此该vector可以轻松放入RAM)。intmain(){inti;/*initializerandomseed:*/srand(time(NULL));vectorvec;do{i=rand()%10+1;vec.push_back(i);}while((vec.size()*sizeof(int))但是,我注意到我的dowhile循环无限执行。可能的原因之一是vec.size()的范围是longunsignedint,这远远少于插入的元素数量,即pow(2,35),因此,我认为它进入了无限循环