草庐IT

EidosValue_Int_vector

全部标签

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),因此,我认为它进入了无限循环

c++ - 无法重载现有的 std::vector 函数

我正在做一个POC实现,根据要求,我需要扩展std::vectorinsertAPI,它只需要一个参数(要插入的值),并且代码会在内部添加这个容器的末端。我创建了一个派生自std::vector的自定义类(ValVector),并定义了一个接受单个参数但在编译时接受的自定义InsertAPI抛出错误。下面是带有错误信息的代码片段:#include#includeusingnamespacestd;typedefboolBOOL;template>classValVector:publicstd::vector{public:BOOLinsert(constT&elem){return(

c++ - 安全地将 int 转换为枚举

我想知道是否有任何巧妙的技巧可以安全地将整数转换为枚举。在您投票认为这是重复之前,我不是在问如何转换(inti;Enume=static_cast(i)很简单)。我问的是如何安全地执行此操作,验证结果值确实在枚举中。代码如下enumclassE{A=1,B=2};intmain(int,char**){inti=3;Ee=static_cast(i);}将编译(AFAIK)但是e将不包含枚举中的有效值。我想到的最好的方法是类似switch(i){case1:returnE::A;case2:returnE::B;default:throwinvalid_argument("");}哪个

c++ - vector<double> 比 double* : why? 快

这是我用std::vector试过的一个循环和普通的旧double*.对于1000万个元素,vector版本的运行时间是double*的大约80%。版本需要;对于N的几乎任何值,vector明显更快。查看GCCSTL源代码,我没有看到std::vector正在做任何比double*本质上更有趣的事情习语正在做(即,使用普通旧new[]分配,operator[]取消引用偏移量)。Thisquestion也是这么说的。知道为什么vector版本更快吗?Compiler:GCC4.6.1Examplecompileline:g++-Ofast-march=native-DNDEBUG\-ft

c++ - 获取 std::set 元素地址时从 ‘const int*’ 到 ‘int*’ 的无效转换

我收到以下错误error:invalidconversionfrom‘constint*’to‘int*’以下是我的程序#includeintmain(intargc,char**argv){std::setintSet;intSet.insert(1);intSet.insert(2);intSet.insert(3);intSet.insert(4);intSet.insert(5);int*pAddress=&(*(intSet.find(4)));}我想要std::set中元素的地址,此代码不会给Microsoft编译器带来任何编译错误,但g++会给出此编译错误。

c++ - std::vector< std::vector<unsigned char>> 或 std::deque< std::vector<unsigned char>>?

我有一个现有的算法,如果可能的话,我需要稍微优化它。目前无法在此算法中进行大量更改。该算法适用于std::vector>的实例.它看起来像这样:typedefstd::vectorinternal_vector_t;std::vectorinternal_vectors;while(fetchinglotsofrecords){internal_vector_ttmp;//reads1Mbofcharsintmp...internal_vectors.push_back(tmp);//somemorework}//usethisinternal_vectors算法在internal_v