您的位置:

vectorpush:完整介绍与代码示例

一、vectorpush_back效率

vector是C++中常用的STL容器,其中的vector::push_back函数可以向末尾添加元素。我们需要评估它的效率。C++11开始,vector::emplace_back函数代替vector::push_back函数性能更高。

// vector::push_back example
#include 
#include 
   

int main ()
{
  std::vector
     myvector;
  clock_t tStart = clock();
  for (int i=0; i<1000000; ++i) {
    myvector.push_back(i);
  }
  printf("Time taken: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
  return 0;
}

    
   
  

运行以上代码,我们可以获得它的运行时间。

二、vectorpushfront

vector::push_front函数向开头插入元素,这种操作内部需要将其他元素移动到指定位置。

// vector::push_front example
#include 
#include 
   

int main ()
{
  std::vector
     myvector (5,100);
  myvector.push_front(200);
  std::cout << "myvector contains:";
  for (std::vector
     ::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';
  return 0;
}

     
    
   
  

运行以上代码,我们可以得到以下输出:myvector contains: 200 100 100 100 100 100。

三、vectorpushback数组满

如果vector::push_back函数执行后,数组已经满了怎么办?vector会自动增加内存空间来存储元素。我们需要关注其容量和大小,如果容量已经不足,我们需要调用reserve或resize函数增加vector的大小。这样可以有效减少内存分配次数,提高性能。

// vector::push_back with capacity
#include 
#include 
   

int main()
{
  std::vector
     myvector;
  myvector.reserve(1000000);
  for (int i=0; i<1000000; ++i) {
    myvector.push_back(i);
  }
  std::cout << "vector size: " << myvector.size() << '\n';
  std::cout << "vector capacity: " << myvector.capacity() << '\n';
  return 0;
}

    
   
  

运行以上代码,我们可以看到该vector的最终容量达到1000000。

四、vectorpushback数组

在C++11之前,我们必须使用循环语句向vector中插入元素。C++11之后,我们可以使用花括号列表来一次性插入所有元素。

// vector initialization with elements
#include 
#include 
   

int main()
{
  std::vector
     myvector = {10, 20, 30, 40};
  for (int i=0; i
     

      

运行以上代码,我们可以看到所有元素都被正确地插入到了vector中。

五、vectorpush_back内存

在使用vector::push_back函数时,我们需要警惕内存回收机制。一旦vector中的元素被删除,vector不会自动回收内存。我们应该使用vector::swap函数来释放内存。

// vector::swap to release memory
#include 
#include 
        

int main()
{
  std::vector
          myvector (100);
  std::vector
           ().swap(myvector);
  std::cout << "vector size: " << myvector.size () << '\n';
  std::cout << "vector capacity: " << myvector.capacity () << '\n';
  return 0;
}

          
         
        
       

运行以上代码,我们可以看到vector的size和capacity都变为0,这意味着内存已经被释放。

六、 vectorpushback崩溃

vector::push_back函数可能会导致vector崩溃。我们需要检查vector::reserve函数的返回值,以确保足够的内存已经分配。

// vector::push_back with checking of memory
#include 
#include 
        

int main()
{
  std::vector
          myvector;
  myvector.reserve (100);
  myvector.push_back(42);
  std::cout << "vector size: " << myvector.size() << '\n';
  std::cout << "vector capacity: " << myvector.capacity() << '\n';
  return 0;
}

         
        
       

运行以上代码,我们可以获取vector的容量和大小,保证不会发生崩溃问题。

七、vectorpushback选取

以上是关于vector::push_back函数的一些重要方面。我们可以应用这些知识来编写高效、安全的代码。

java方法整理笔记(java总结)

2022-11-08
vectorpush:完整介绍与代码示例

2023-05-18
印象笔记记录java学习(Java成长笔记)

2022-11-12
java客户端学习笔记(java开发笔记)

2022-11-14
java包笔记,Java语言包

2022-11-18
python基础学习整理笔记,Python课堂笔记

2022-11-21
c到c语言笔记的简单介绍

2022-11-24
java学习笔记(java初学笔记)

2022-11-14
Layui 分页完整示例

2023-05-20
java基础知识学习笔记一,Java基础笔记

2022-11-21
我的python笔记06(Python)

2022-11-14
js代码整洁随笔,js代码整理

本文目录一览: 1、如何在页面让JavaScript代码原样显示,用标签不起用,js照常运行。请看问题补充 2、怎么让JS文件代码对齐 3、怎么样格式化javascript,怎么样格式化js 4、为什

2023-12-08
java笔记,大学java笔记

2022-11-28
js待办事项列表添加删除代码的简单介绍

本文目录一览: 1、“点击此处可添加笔记”的代码怎么写 2、js动态添加、删除html代码 3、vivo手机便签怎么一起删 “点击此处可添加笔记”的代码怎么写 输入符号就可以了第一步打开手机,点击备忘

2023-12-08
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
python课堂整理32(python笔记全)

2022-11-12
javascript入门笔记1的简单介绍

2022-11-18
java笔记,尚硅谷java笔记

2022-12-01
重学java笔记,java笔记总结

2022-11-23
mysql数据库完整笔记(mysql数据库数据)

2022-11-13