草庐IT

WAP-PUSH

全部标签

c++ - push_back 与 emplace_back 到 std::vector<std::string>

类似的问题存在于here和here但我认为我们还没有得到明确的答案然后我重新提出问题。C++11标准有两种在vector末尾添加新元素的方法,它们是std::vector::push_back和std::vector::emplace_back.它们之间的区别在于std::vector::emplace_back就地构造对象而std::vector::push_back基本上复制对象(或原语类型)或将其移动到vector的末尾。然后std::vector::push_back看起来是将原始类型添​​加到std::vector中的更好选择。例如:std::vectorvVec;vVec.

c++ - 在 C++ 中, vector 函数 push_back 会增加空数组的大小吗?

快速提问。假设我声明了一个大小为20的vector。然后我想使用push_back向它添加一些整数。vectormyVector(20);myVector.push_back(5);myVector.push_back(14);我的vector的容量现在是22,还是还是20?索引[19]和[20]分别添加了5和14吗?还是它们在[0]和[1]? 最佳答案 在这些语句之后,它的容量是实现定义的。(请注意,这与其大小不同。)vectormyVector(20);这将创建一个由20个0填充的vector。它的大小是二十,准确地说,它的容量

c++ - 指向 deque<int>::push_back 的指针

#include#includeusingnamespacestd;main(){typedefvoid(deque::*func_ptr)(int);func_ptrfptr=&deque::push_back;}我试图获取指向该函数的指针,但出现编译错误error:cannotconvert‘void(std::deque::*)(constvalue_type&){akavoid(std::deque::*)(constint&)}’to‘func_ptr{akavoid(std::deque::*)(int)}’ininitializationfunc_ptrfptr=&deq

c++ - push_back() "new"一个对象在添加到 c++ 中的 std::list 之前

我是C++标准库的新手。我想使用std::list。我知道如果我自己创建一个列表而不是使用STL,我应该为一个新对象分配内存,然后将它添加到列表中。A类的C风格列表:A*ptrA=newA();ptrA->setElement(value);ptrA->next=null;currentPositionMyCstyleList->next=ptrA;ptrA->prev=currentPositionMyCstyleList;如果我使用STL,是否有必要“新建”一个对象?push_back()在添加到c++中的std::list之前是否“新建”了一个对象?下面的代码是否正确?AaObj

c++ - <queue> 的 emplace 和 push 的区别

之间有什么区别?的安置和插入?这里是关于std::queue::emplace的解释和std::queue::push.这两种方法都在其当前最后一个元素之后添加元素,返回None. 最佳答案 push()将已构造对象的拷贝作为参数添加到队列中,它采用队列元素类型的对象。emplace()在队列末尾就地构造一个新对象。它将队列的元素类型构造函数采用的参数作为参数。如果您的使用模式是创建一个新对象并将其添加到容器中,则可以使用emplace()简化几个步骤(创建一个临时对象并复制它)。例子#include#includeusingnam

c++ - 为什么 list::push_back 在 VC++ 中比在 g++ 中慢得多?

此代码在我的VS2012中大约需要20秒,但在G++中仅需1.x秒。均在win8x64中并使用默认选项编译。listitems;for(inti=0;i是关于内存分配的吗?在我的机器上用VC++输出后释放内存需要3~5秒,而在我friend的(win7x64)上甚至超过1分钟。 最佳答案 嗯...我扩展了您的代码以包含计时:#include#include#include#includeintmain(){std::listitems;clock_tstart=clock();for(inti=0;i我用VC++编译使用:cl/O2

c++ - Back_inserter 或 push_back

只是一个简单的问题-将字符串添加到vector的末尾哪个更好?,back_inserter或push_back?主要是,哪个工作得更快(我正在处理大量数据,所以边际差异实际上很重要),主要差异是什么? 最佳答案 两者并不等价。您使用std::back_inserter例如,当您需要将输入迭代器传递给算法时。std::vector::push_back在这种情况下不是一个选择。例如std::vectora(100,"Hello,World");std::vectorb;std::copy(a.begin(),a.end(),std::

git pull/push时免设置提示输入账号密码方法

gitpull/push时免设置提示输入账号密码方法1、先cd到根目录,执行gitconfig--globalcredential.helperstore命令gitconfig--globalcredential.helperstore2、执行之后会在家目录的.gitconfig文件中增加如下配置[credential]helper=store3、之后cd到项目目录,执行gitpull命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在根目录生成一个.git-credentials文件4、之后pull/push代码都不再需要输入账号密码了~参考链接

C++ Vector,从另一个线程崩溃的 push_back?

我使用已检查的STL实现在我的代码中出现意外的断言失败。经过一些研究,我将问题缩小到一个vector中的push_back,该vector是从与创建该vector的线程不同的线程调用的。重现此问题的最简单代码是:classSomeClass{private:std::vectortheVector;public:SomeClass(){theVector.push_back(1);//Ok}voidadd(){theVector.push_back(1);//Crash}};唯一的区别是SomeClass是从我的主线程实例化的,而add是从另一个线程调用的。但是,没有并发问题:在我用于

c++ - push_back 到 std::vector,复制构造函数被重复调用

这个问题在这里已经有了答案:vectorpush_backcallingcopy_constructormorethanonce?(5个答案)关闭4年前。使用is代码,我得到以下输出:A::A()iscalledtest#1A::A(constA&other)iscalledtest#2A::A(constA&other)iscalledA::A(constA&other)iscalledtest#3A::A(constA&other)iscalledA::A(constA&other)iscalledA::A(constA&other)iscalled在调试代码时,对于3个测试用例,