以下是关于std::vector::push_back()的一些好奇行为: 性能:push_back()操作的时间复杂度为O(1),即它的执行时间与向量的大小无关。这是因为std::vector在内部实现时,预留了一些额外的空间,以便在添加新元素时不需要频繁地重新分配内存。 自动扩容:当std::vector的容量不足以容纳新元素时,它会自动分配更...
#include<cstdlib>#include<vector>#include<chrono>intmain(){autoroll=[](){return(std::rand()%10)+1;};std::vector<int>container;container.push_back(roll());constint*pAddressOrignItemZero=&(*container.begin());std::chrono::duration<double>durInsertTime(0);for(inti=0;i<10;i++){consti...
pop_back()用来删除vector的尾元素,时间复杂度为O(1)。 1#include <iostream>2#include <vector>3usingnamespacestd;4vector<int>vi;5intmain()6{7for(inti=0;i<5;i++){8vi.push_back(i);//将i的值依次插入到vi的尾部9}10vi.pop_back();//删除尾元素11for(inti=0;i<vi.size();i++){12c...
访问元素的时间复杂度为O(1),因此vector是一种高效的动态数组。 vector管理的内存是连续的,因此可以使用指针直接访问元素。 vector会根据需要动态增加内存,并且内存空间通常是连续的,因此push_back操作的时间复杂度为O(1)。 需要注意的是: 当vector需要增加内存时,可能会发生内存重新分配,因此指向vector内部元素的指针...
pop_back(x)就是删除vector的尾元素x,时间复杂度为O(1)。 1.3.3、size()函数 用来获得vector中元素的个数,时间复杂度为O(1)。 1.3.4、clear()函数 用来清空vector所有的元素,时间复杂度为O(N),N为元素总个数。 1.3.5、insert()函数 用insert(it,x)往vector的任意迭代器it初传入一个元素x。时间复杂...
pop_back() 删除vector尾元素,时间复杂度O(1) #include<iostream> #include<vector> usingnamespacestd; intmain(){ vector<int>vi; for(inti=1;i<=5;i++){ vi.push_back(i); } vi.pop_back();//删除尾元素 for(inti=0;i<vi.size();i++){ ...
所以平均每个元素拷贝了 1 + 1/2 + 1/4 + ... = 2 次,这是下限。如果这时再 push_back()...
cout << g_vec[0] << endl; //时间复杂度 1 g_vec.pop_back(); //删除 cout << g_vec.size() << endl; g_vec.push_back(12); g_vec.push_back(23); //插入 vector <int>::iterator theIterator = g_vec.begin(); g_vec.insert(theIterator,1,33); ...
删除操作:删除末尾元素(pop_back)很快,因为它不需要重新排列元素。删除中间元素同样可能需要移动后续...
时间复杂度:单次删除操作(如 erase 或pop_back)的时间复杂度通常为 O(n),其中 n 是 std::vector 中剩余元素的数量。这是因为删除操作可能需要移动剩余元素以填补被删除元素的位置。 内存分配:如果删除操作导致 std::vector 的大小减少到其容量的一半以下,某些实现可能会触发内存重新分配以减小容量,这会增加额外...