草庐IT

type1Vector

全部标签

c++ - 为什么默认构造函数不适用于 `vector::emplace_back`

#include#include#includestructPersonA{intage;std::stringname;PersonA(int_age,conststd::string&_name):age(_age),name(_name){}};structPersonB{intage;std::stringname;PersonB(int_age,conststd::string&&_name):age(_age),name(_name){}};structPersonC{intage;std::stringname;};intmain(){std::vectorpersonA

c++ - 如何使类在 vector 内可排序?

我有一个类说classstuff{intid;intammount;intquality;/*...*/};我有一个vectoritems.我想让我的收藏按stuff::id排序并可通过staff::id搜索.我可以通过find_if来完成,并使用一些基于STLlambda的特殊排序函数进行排序。但是我想在vector中默认拥有这一切。我听说有一些方法可以创建散列函数,但我四处搜索都找不到它...那么如何使用默认vector函数使类在vector内部可排序/可搜索? 最佳答案 为了排序,实现一个operator比较两个结构:bool

c++ - boost .python : Argument types did not match C++ signature

我在python中调用C++函数时遇到一个奇怪的问题。我公开了一个我想从中调用函数的类:class_>("MyClass",init())//....def("someFunc",&MyClass::someFunc);我得到一个std::shared_ptr来自另一个类的成员变量,该类通过.def_readonly(...)公开当我尝试调用该函数时,出现以下错误:File"pytest.py",line27,intest_funccu.someFunc("string")Boost.Python.ArgumentError:PythonargumenttypesinMyClass.s

C++ 从 ‘const type* const’ 到 ‘type*’ 的无效转换

我有一个非常愚蠢的问题(我认为)。很长时间没有用C++编码,但我无法弄清楚这个问题。我有这个类:#includeclassNode{private:QList_adjacent;public:Node();boolisConnectedTo(Node*n)const;};isConnectedTo()的实现:boolNode::isConnectedTo(Node*n)const{return_adjacent.contains(n)&&n->_adjacent.contains(this);}我在return行中收到以下错误:Node.cpp:Inmemberfunction‘con

c++ - 范围基数并插入 vector C++11

是否可以在迭代C++11时更改vector的大小?显然迭代器将失效,但是否仍可以使用以下干净的语法?std::vectorvec;for(autoelem:vec){if(condition(elem)){new_elem=function(elem);vec.insert(iterator_associated_with_elem+1,new_elem);}//Don'tinsertoncondition(new_elem)}如果不是,完成此任务的最干净的代码是什么? 最佳答案 不,你不能。标准要求基于raged的​​for的行为

c++ - typedef type * type::* ,它是什么?

我有以下代码:structmyType{myType*ptr;};typedefmyType*myType::*other_type;第二行typedef'ining是什么?这是一个返回myType指针或其他东西的成员函数吗? 最佳答案 将other_type定义为指向myType成员的指针,其中所述成员本身是指向myType的指针。例如,您可以这样使用它:other_typex=&myType::ptr;myTypemine;mine.*x=&mine;为什么你会这样做,我不能说。 关

c++ - 使用 boost::pool 管理 std::vector 中的内存分配

我想要一个std::vector对象,使用boost::pool分配对象。这样的事情是否正确:classMyClass{private:doubledata;public:MyClass(doubled):data(d){}};intmain(){std::vector>vect;vect.push_back(4.5);vect.push_back(9.8);//Arethesebeingstoredinapoolnow?return0;}此代码有效,但我不完全确定原因。我对分配器的概念很陌生,但如果我理解正确的话,这就是告诉std::vector使用池而不是默认分配器,因此在vect

C++: std::vector - "slice"一个 vector 是可能的吗?

我正在编写一些代码来集成ODE。这个问题既是对编码建议的请求,也是对解决方案的请求,因此如果您对我即将提供的建议有其他建议,请告诉我!要由ODE积分器积分的“对象”以6个“block”的形式出现...这样做的原因是我有一个double的std::vector,它们按以下方式排列:前3个double是位置坐标;x、y和z。接下来的3个double坐标是速度坐标;x、y和z。所以,现在你知道了,我有一个函数,它接受成对的“位置”“”“vector”“”作为参数并返回某种结果......看看我在哪里我要接受这个吗?目前函数需要2批位置坐标,方式如下:std::vectormagic_grav

c++: 释放 vector 内存,clear&swap

我读了一篇关于vector内存泄漏的博客。给定一个vector,插入大量数据后,即使删除大量数据(或者用clear()全部删除)也不会改变容器的容量,它还是会占用内存。为了避免这种情况,我们应该想办法改变容器的容量,使其与当前需要的数据保持一致。所以我写了一个测试://code1//whythisorderisbest?//memory316vectorvNum;for(inti=0;i(vNum).swap(vNum);//memory612然后我调换顺序://code2//memory308vectorvNum;for(inti=0;i(vNum).swap(vNum);//mem

c++ - std::vector of function pointers:不同的模板参数

为什么下面会编译std::vectorfunc_ptrs;但这不是std::vectorfunc_ptrs?在第二种情况下,我收到了那些丑陋的STL错误消息之一,所以我不打算将所有内容都放在这里,但在消息的末尾我得到了这个/usr/include/c++/4.8/bits/stl_construct.h:102:30:error:ISOC++forbidsincrementingapointeroftype‘int(*)(double)’[-fpermissive]for(;__first!=__last;++__first)这似乎暗示C++将类型int(double)转换为int(*