草庐IT

back-stack

全部标签

C++ 如何将数组 int[10] push_back 到 std::vector<int[10]>?

#includeusingnamespacestd;vectorv;ints[60];v.push_back(s);此代码在VisualStudio2015社区中报告编译错误:错误(事件)没有重载函数实例“std::vector::push_back[with_Ty=int[60],_Alloc=std::allocator]”匹配参数列表错误C2664“voidstd::vector>::push_back(constint(&)[60])”:无法将参数1从“int”转换为“int(&&)[60]” 最佳答案 改为使用std::a

c++ - vector<T>::push_back 用于预定义的构造函数?

我在这里问我的看法是否真的正确。我本来想定义vectorv(size_tsomeSize,Tinit_value)会调用类似vector::reserve的函数,而不是vector::push_back.我在这里找到了一些与此相关的讨论:std::vectorpush_backisbottleneck,但它的想法略有不同。运行一些实验,我注意到vectorv(size_tsomeSize,Tinit_value)电话::push_back一直。这是真的?我使用uftrace得到以下报告(https://github.com/namhyung/uftrace)。AvgtotalMinto

c++ - 如何在 for 循环中迭代 `std::stack` 个元素?

这个问题在这里已经有了答案:Doesstd::stackexposeiterators?(5个答案)关闭7年前。我正在编写一个FIR滤波器,它应该计算runningaverage输入序列的。classRunningAverager{public:RunningAverager(uint64_tFilterOrder){for(uint64_ti=0;i::const_referenceref=Registers.begin();ref!=Registers.end();???){//begin()andend()methodsdonotexistforstd::stack//Sum+=

c++ - 关于指针上 std::vector::push_back 中的 EXC_BAD_ACCESS 错误的问题

std::vector当然很棒,嘿?不过,我在使用push_back添加元素时遇到了EXC_BAD_ACCESS。(我曾经遇到过类似的问题,在SO上查找,解决了!遗憾的是,这似乎是一个不同的问题。)classBackgroundGroupsHandler{public:voidaddBeat(Beat*b);vectorgroups;};(Beat是一个简单的类似结构的类,它携带一些数据。)classbeat_display_group{public:voiddraw_me(float,float,float,int);beat_display_group(intrhythmInt,i

c++ - 增加 Stack Size 的缺点以及 Stack Commit 和 Reserve 之间的区别

我最近遇到了DinkumwareC++11的堆栈溢出问题库,到目前为止,我已经通过将StackCommit和StackReserve大小加倍来解决这个问题(我还没有遇到任何问题)。但是,我很好奇增加堆栈大小是否有任何缺点,而且,我不完全确定StackCommit和StackReserve之间的区别是什么(但是堆栈提交要小得多比堆栈保留)。 最佳答案 增加堆栈大小的明显后果是更多的内存使用。由于在大多数情况下堆栈与总内存相比并不大,所以这不是大问题。显然,如果有许多线程每个都使用大堆栈,那么这可能会占用机器中的大量可用内存-特别是如果

c++ - std::vector::emplace_back 比 std::vector::push_back 慢的示例?

我目前正在阅读ScottMeyer的“EffectiveModernC++”。在第42项中,他声称,例如std::vector::emplace_back通常(但不总是)与使用push_back一样快,甚至更快。他列出了三个条件,在这些条件下它至少应该一样快,但没有提供在这些条件不全部满足的情况下的反例。有人可以给我提供一个示例,说明使用emplace_back会导致比使用push_back更差的性能吗? 最佳答案 这取决于您所说的“emplace_back比push_back慢”是什么意思。考虑构造成本高而复制成本低的类,例如具有

c++ - 具有反向和 pop/push_back 成本的 STL vector

我不太擅长计算算法成本,所以我想问一下。这是一个初始化为1000个元素的vector:vectormFreeIndexes(1000);我会连续pop_back/push_back元素到vector,但push_back永远不会超过1000(所以永远不要强制vector重新分配)。在这种情况下,pop_back/push_back操作是O(1)还是O(n)? 最佳答案 来自C++标准23.3.7.5:voidpush_back(constT&x);voidpush_back(T&&x);Remarks:Causesreallocat

c++ - 在 C++ 中,std::string::push_back() 的摊销复杂度是 O(1) 吗?

我知道标准规定它适用于vector,但字符串呢? 最佳答案 是的,它是摊销常数时间。参见第716页的表101ofthisdocument:Table101listsoperationsthatareprovidedforsometypesofsequencecontainersbutnotothers.Animplementationshallprovidetheseoperationsforallcontainertypesshowninthe“container”column,andshallimplementthemsoast

c++ - unique_ptr 和 OpenSSL 的 STACK_OF(X509)*

我使用一些using语句和unique_ptr来与OpenSSL一起工作,如suggestedinanotherquestion.否则,代码会变得非常丑陋,而且我不太喜欢goto语句。到目前为止,我已经尽可能地更改了我的代码。以下是我使用的示例:usingBIO_ptr=std::unique_ptr;usingX509_ptr=std::unique_ptr;usingEVP_PKEY_ptr=std::unique_ptr;usingPKCS7_ptr=std::unique_ptr;...BIO_ptrtbio(BIO_new_file(some_filename,"r"),::

c++ - std::back_inserter 在旧的 GCC 上需要 const_reference。为什么?

我目前正在查看一些可以在较新版本的GCC上编译但不能在旧版本上编译的代码。在我的例子中,我使用std::back_inserter将一些数据从一个数据结构std::copy到自定义数据结构。但是,如果我忘记了此自定义数据结构中的typedefvalue_type&const_referencetypedef,它将无法在GCC4.4上编译。相同的代码在GCC4.5上编译和运行得很好。这两个编译器版本之间有什么区别,这使得代码可以在一个版本上编译但不能在另一个版本上编译。我猜想这与C++11的实现有关,后者在GCC4.4中不太完整。我猜可能是decltype或另一个新的C++11关键字。此