草庐IT

Push_back

全部标签

c++ - vector<unique_ptr> 使用 push_back 调整大小 - 它是如何工作的?

据我了解,当东西被push_back放入vector时,有时它必须分配一个新的内存块,导致将所有元素从旧内存块复制到其中,调用它们的析构函数。由于unique_ptr析构函数删除了拥有的内存,它们怎么可能与vector一起使用?在vector中使用unique_ptr是否安全?是不是比普通指针慢? 最佳答案 resultingincopyingalltheelementsintoitfromtheoldmemoryblock,callingtheirdestructors.Sinceunique_ptrdestructorsdele

Git push - 次优包 - 内存不足

我真的可以在这里得到一些帮助。我刚刚创建了一个新的裸仓库作为开发推送的生产目标。我还在服务器上将工作Web目录作为git存储库。服务器在centos5.5上运行git1.7.4.1在web目录中创建新的repo后,我执行了gitadd。它统计了2300个和一些奇怪的文件以及超过230k的插入。我提交了新添加的文件库。很好很干净。但是,当我执行gitpushoriginmaster时,它一直给我这个(请注意,我有8个CPU,因此有8个线程。文档说这是正常的);#gitpush--mirrorCountingobjects:2000,done.Deltacompressionusingup

Git push - 次优包 - 内存不足

我真的可以在这里得到一些帮助。我刚刚创建了一个新的裸仓库作为开发推送的生产目标。我还在服务器上将工作Web目录作为git存储库。服务器在centos5.5上运行git1.7.4.1在web目录中创建新的repo后,我执行了gitadd。它统计了2300个和一些奇怪的文件以及超过230k的插入。我提交了新添加的文件库。很好很干净。但是,当我执行gitpushoriginmaster时,它一直给我这个(请注意,我有8个CPU,因此有8个线程。文档说这是正常的);#gitpush--mirrorCountingobjects:2000,done.Deltacompressionusingup

c++ - emplace_back 导致静态 constexpr 成员上的链接错误

为什么emplace_back引用需要定义的成员?emplace_back(integerliteral)和emplace_back(staticconstexprintegermember)有什么区别?如果我切换到C++17,它编译得很好。我发现在C++17中静态constexpr数据成员是隐式的inlined.这是否意味着编译器隐式地为它们创建了一个定义?示例代码:classbase{intn;public:base(intn):n(n){}};structbase_trait{staticconstexprintn=1;};intmain(void){vectorv;v.empl

c++ - emplace_back 导致静态 constexpr 成员上的链接错误

为什么emplace_back引用需要定义的成员?emplace_back(integerliteral)和emplace_back(staticconstexprintegermember)有什么区别?如果我切换到C++17,它编译得很好。我发现在C++17中静态constexpr数据成员是隐式的inlined.这是否意味着编译器隐式地为它们创建了一个定义?示例代码:classbase{intn;public:base(intn):n(n){}};structbase_trait{staticconstexprintn=1;};intmain(void){vectorv;v.empl

c++ - std::vector emplace_back() 用于不可复制的可构造对象

考虑到en.cppreference.com的这句话关于std::vector::emplace_back"Appendsanewelementtotheendofthecontainer.Theelementisconstructedin-place,i.e.nocopyormoveoperationsareperformed.Theconstructoroftheelementiscalledwithexactlythesameargumentsthataresuppliedtothefunction."以下示例:#includestructA{A(int){}A(Aconst&)

c++ - std::vector emplace_back() 用于不可复制的可构造对象

考虑到en.cppreference.com的这句话关于std::vector::emplace_back"Appendsanewelementtotheendofthecontainer.Theelementisconstructedin-place,i.e.nocopyormoveoperationsareperformed.Theconstructoroftheelementiscalledwithexactlythesameargumentsthataresuppliedtothefunction."以下示例:#includestructA{A(int){}A(Aconst&)

c++ - 插入或 push_back 到 std::vector 的末尾?

以下两种将新元素插入到std::vector:末尾的方法在性能上是否有任何差异方法一std::vectorvec={1};vec.push_back(2);vec.push_back(3);vec.push_back(4);vec.push_back(5);方法二std::vectorvec={1};intarr[]={2,3,4,5};vec.insert(std::end(vec),std::begin(arr),std::end(arr));就个人而言,我喜欢方法2,因为它简洁明了,可以一次性插入数组中的所有新元素。但是性能有什么不同吗?毕竟,他们做同样的事情。不是吗?更新首先我

c++ - 插入或 push_back 到 std::vector 的末尾?

以下两种将新元素插入到std::vector:末尾的方法在性能上是否有任何差异方法一std::vectorvec={1};vec.push_back(2);vec.push_back(3);vec.push_back(4);vec.push_back(5);方法二std::vectorvec={1};intarr[]={2,3,4,5};vec.insert(std::end(vec),std::begin(arr),std::end(arr));就个人而言,我喜欢方法2,因为它简洁明了,可以一次性插入数组中的所有新元素。但是性能有什么不同吗?毕竟,他们做同样的事情。不是吗?更新首先我

c++ - VS2013 下的 emplace_back() 问题

考虑以下代码std::vectornums{21,22,23,24};nums.emplace_back(nums[0]);nums.emplace_back(nums[1]);for(auton:nums){std::coutVS2013的输出21222324-1789160222为什么-17891602在这里?GCC4.8.4的输出正确如下212223242122那我比较VS2013和GCC的emplace_back的实现VS2013templatevoidemplace_back(_Valty&&..._Val){//insertbymovingintoelementatendi