草庐IT

back-stack

全部标签

c++ - 将 emplace_back 与 unique_ptrs 容器一起使用是否安全?

考虑以下几点:std::vector>ptrsToInts;ptrsToInts.emplace_back(newint);如果vector中发生重新分配,并且失败(抛出std::bad_alloc),我是“安全”还是会泄漏int?C++1123.3.6.5[vector.modifiers]/1说:Ifanexceptionisthrownotherthanbythecopyconstructor,moveconstructor,assignmentoperator,ormoveassignmentoperatorofTorbyanyInputIteratoroperationthe

c++ - 为什么这个 std::vector::emplace_back 失败?

我遇到了一个编译器错误:attemptingtoreferenceadeletedfunction#include#includetemplatestructContainer{Container()=default;Container(constContainer&other)=delete;Container(T*ptr):ptr(ptr){}T*ptr;~Container(){deleteptr;}};structFoo{Foo(inta,intb){}};intmain(){std::vector>myvector;myvector.push_back(newFoo(1,2)

C++ std::string 追加 vs push_back()

这确实是一个仅出于我自己的兴趣的问题,我无法通过文档确定。我看到http://www.cplusplus.com/reference/string/string/该append具有复杂性:“未指定,但通常在新字符串长度中达到线性。”而push_back()具有复杂性:“未指定;一般为摊销常数,但在新字符串长度上可达线性。”作为一个玩具示例,假设我想将字符“foo”append到字符串中。会myString.push_back('f');myString.push_back('o');myString.push_back('o');和myString.append("foo");完全一样

c++ - std::vector emplace_back 可以从 vector 本身的元素复制构造吗?

当使用std::vector的push_back时,我可以推送vector本身的元素,而不必担心由于重新分配而使参数无效:std::vectorv={"a","b"};v.push_back(v[0]);//Thisisokevenifv.capacity()==2beforethiscall.但是,当使用emplace_back时,std::vector会将参数转发给std::string的构造函数,以便进行复制构造在vector中的位置。这让我怀疑vector的重新分配发生在新字符串被复制构造之前(否则它不会被分配到位),从而在使用前使参数无效。这是否意味着我不能用emplace_

c++ - 使用 C 字符串会给出警告 : "Address of stack memory associated with local variable returned"

我不是C程序员,所以我对C-string不是很熟悉,但是现在我必须使用C库,所以这里是我的代码的简化版本来演示我的问题:char**ReadLineImpl::my_completion(){char*matches[1];matches[0]="add";returnmatches;}我收到此警告:Warning-addressofstackmemoryassociatedwithlocalvariable'matches'returned而且我的程序似乎不能正常工作(可能是因为上面提到的警告)。警告意味着什么?会不会造成什么问题? 最佳答案

c++ - vector 的 vector push_back

我正在用C++设计一个多级队列过程模拟器,但是在尝试实现多个队列时遇到了问题(我的队列是vector)。所以,“多级”是一个4元素数组(不是vector)。在这些元素中的每一个内部都有一个vector(类型t_PCB)。vector>multilevel[4];我的问题是:如何在这4个t_PCBvector的末尾插入一个元素?提前谢谢你。我尝试了下面的代码行,但它不起作用(错误:不匹配调用'push_back'的成员函数)multilevel[0].push_back(p);//where"p"isat_PCBobject在谈论“多级”时不能使用上面的行,因为这个数组只接受参数类型:v

c++ - 为什么 emplace/_front/_back 不返回引用?

当使用std::vectors、std::lists(或其他STL容器)时,我碰巧经常写这个,因为代码简短(而不是每次都放置显式vec[index])和内存分配效率(避免复制/移动),我想我不是唯一这样做的人:std::vectorvec;vec.emplace_back();A&element=vec[vec.size()-1];element.prop="value";为什么STL容器的emplace、emplace_back和emplace_front方法不返回T&?它允许人们简单地写这个而不是使用一个阴暗的vec.size()-1:std::vectorvec;A&elemen

c++ - 在 std::vector 中调整大小与 push_back :它是否避免了不必要的复制分配?

当从std::vector调用方法push_back时,它的大小加一,意味着创建一个新实例,然后是你传递的参数将被复制到这个最近创建的元素中,对吧?示例:myVector.push_back(MyVectorElement());那么,如果我想简单地使用元素的默认值来增加vector的大小,那么使用resize方法不是更好吗?我的意思是这样的:myVector.resize(myVector.size()+1);据我所知,这将完成完全相同的事情,但会避免元素属性的完全不必要的分配拷贝。这个推理是正确的还是我遗漏了什么? 最佳答案 至

javascript - Moment JS : Deprecation warning: moment construction falls back to js Date. 这是不鼓励的,将在即将发布的主要版本中删除

这个问题在这里已经有了答案:“Deprecationwarning:momentconstructionfallsbacktojsDate”whentryingtoconvertRFC2822dateinmoment.js(7个回答)关闭6年前。我收到弃用警告:时刻构造回退到js日期。这是不鼓励的,将在即将发布的主要版本中删除。更多信息请引用https://github.com/moment/moment/issues/1407。但我是一个新手,我不知道如何解决它,所以上面的消息消失了。我认为问题在于这两行,但我不确定。varnextMonth=moment(moment(year+"

node.js - nodejs firebase 错误 RangeError : Maximum call stack size exceeded failure

我有一个来自firebase的错误:FIREBASEWARNING:Exceptionwasthrownbyusercallback.RangeError:Maximumcallstacksizeexceeded我没有发现我的错误。我很迷茫,请帮忙。我的代码如下所示:app.post('/updateCoords',(req,res)=>{varusrID=req.body.id;varusrCoords={lat:req.body.lat,long:req.body.long}console.log('userID:'+usrID+'lat:'+usrCoords.lat+'long