草庐IT

vector_tostr

全部标签

c++ - 有没有办法在使用 C++11 调用函数期间将 `vector<int>` 自动提升为 `vector<double>`?

如果我定义一个接受double的函数,我通常可以用int来调用它并获得正确的行为。doublesquare(doubled){returnd*d;}square(1);//validcall但是,如果我有一个接受vector的函数,用vector调用它是无效的doublesum(constvector&d){doubles=0;for(inti=0;if(1,5);sum(f);//Compilererror一个解决方案是使用模板:templatedoubletsum(constvector&d){doubles=0;for(inti=0;if(1,5);tsum(f);//Valid

c++ - vector::emplace_back 与 shared_ptr 的用法

#include#include#includeusingnamespacestd;structBinaryTree{intelement;shared_ptrleft;shared_ptrright;};intmain(){vector>vecBT;//caseIvecBT.emplace_back(newBinaryTree{10,nullptr,nullptr});//caseIIvecBT.emplace_back(shared_ptr(newBinaryTree{20,nullptr,nullptr}));return0;}http://en.cppreference.com

c++ - 如何在 Eigen 中连接 vector ?

我的程序中有两个vectorXd,我喜欢将它们连接成一个vector,这样第二个的值就在第一个之后,我发现它适用于矩阵,但它似乎不适用于vector:Eigenhowtoconcatenatematrixalongaspecificdimension? 最佳答案 像这样,假设你已经有了vec1和vec2:VectorXdvec_joined(vec1.size()+vec2.size());vec_joined(请注意,vector类型只是矩阵类型的类型定义,仅限于只有一列。)进一步阅读:Advancedinitialization

c++ - vector.emplace_back() 和 vector.push_back() 做同样的事情吗?

所以我试图将整数添加到我的vector的背面,并错误地认为push_back()将新数据添加到vector的前面(又名vector[0])。我在Xcode中做了一个测试,并针对emplace_back()测试了push_back()并得到了相同的结果。我以为他们是不同的,但这让我觉得也许他们做同样的事情。如果是这样,为什么vector有不同的方法?这是我的代码,以防我这样做:#include#includeusingnamespacestd;intmain(intargc,constchar*argv[]){//forpush_backvectorpush;push.push_back

c++ - 如何有效地将二进制文件读入 vector C++

我需要将一个大的二进制文件(~1GB)读入std::vector.我目前正在使用infile.read将整个内容复制到char*缓冲区(如下所示),我目前计划将整个东西转换成doubles与reinterpret_cast.肯定有办法把doubles直接进入vector?我也不确定二进制文件的格式,数据是用python生成的,所以它可能都是floatifstreaminfile(filename,std--ifstream--binary);infile.seekg(0,infile.end);//NisthetotalnumberofdoublesN=infile.tellg();i

c++ - `std::vector< std::unique_ptr< T >>` 错误

我看到一些错误传递std::vector>周围有std::move.重现问题的代码是这样的:#include//forstd::unique_ptr#include//forstd::move#include//forstd::vectorstructbar{};usingvtype=std::vector>;structfoo{foo(vtypev):_v(std::move(v)){}private:vtype_v;};vtypegetVector(){return{std::move(std::unique_ptr(newbar()))};};intmain(){foof(std

c++ - 在 vector 声明中移动 unique_ptr

这个问题在这里已经有了答案:CanIlist-initializeavectorofmove-onlytype?(8个答案)关闭5年前。我尝试在vector声明期间移动一些unique_ptr,但出现错误。我认为我在不知情的情况下进行了复制。我不明白为什么我在声明时遇到问题,而它在push_back期间工作得很好。我用几行简化了问题。#include#include#includeusingnamespacestd;intmain(){unique_ptri1=make_unique(142);unique_ptri2=make_unique(242);unique_ptri3=mak

C++,如何在复制构造函数中正确复制 std::vector<Class *>?

我正在使用这两个类//ThisisgenericdatastructurecontainingsomebinarydataclassA{public:A();A(constA&);~A();}//MaindatacontainerclassB{public:B();B(constB&);~B();protected:std::vectordata;}//CopyconstructorforclassbB::B(constB&orig):data(){for(std::vector::const_iteratorit=orig.data.begin();it我想这门课会完成它的工作,但我

c++ - 如何在运行时查找 boost::fusion::vector 中的元素?

我这里有一个通用状态机的专有实现,它使用std::tr1::tuple作为转换表:templatestructtransition{...};typedefstd::tr1::tuple,transition,transition>transition_table;有一个函数templateStatefind_next_state(Statecurrent,Eventevent,constTransitions&transition_table);在给定当前状态和事件的情况下,在转换表中查找下一个状态。除此平台的tuple实现不支持超过10个项目外,一切正常。boost::tuple似

c++ - 返回指针 vector 的类中的 const 方法

假设我有这个类:#includeusingnamespacestd;classBag{vectoritems;public:voidaddItem(int*i){items.push_back(i);}constvectorgetItems()const{returnitems;}};问题是我想防止更改参数项中指针指向的值。但是使用从getItems返回的vector我可以更改指向的值。现在,为了解决这个问题,我可以将参数项声明为vector但是我也无法更改类(class)中的值(value)观。有没有其他方法可以保护值但仍然不在项目声明中使用const?