设为首页 加入收藏

TOP

C/C++中容器vector使用方法(一)
2014-07-19 23:03:42 来源: 作者: 【 】 浏览:326
Tags:C/C 容器 vector 使用方法

  此文总结常用vector操作,是前一篇的续作!只有代码,详细请看代码中的注释。

  [cpp] view plaincopy/*

  * file_name: vector_test.cpp

  *

  * Created on: 2014年6月28日 下午3:34:23

  * Author: The_Third_Wave,

  * Last modified: 2014年6月28日 下午3:34:23

  #include

  #include

  #include "Headers/Myfunc.h"

  #include "Headers/Person.h"

  void output(const std::vector &vec)

  // 因为是输出而不是修改,定义形参为常量引用,提高可靠性(const)和效率(&)!

  {

  std::cout << "size: " << vec.size()<< ", capacity: " <

  }

  int main()

  {

  std::vector vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  pr_vector(vec);

  // 访问首位元素,原生方法之vec.front()和vec.back() 使用前一般最好做元素检查vec.size()

  std::cout << vec.front() << std::ends << vec.back() << std::endl;

  // 通过迭代器【注意:*(--vec.end())】, 使用前一般最好做元素检查vec.size()

  std::cout << *vec.begin() << std::ends << *(--vec.end()) << std::endl;

  auto a = vec.size(); // 让编译器自动分析表达式所属类型

  auto b = vec.capacity(); // 不重新分配内存的话,vector可以保存多少元素

  std::cout << "size: " << a << std::ends << "capacity: " <

  vec.reserve(50); // 分配至少能容纳n个元素的内存空间

  output(vec);

  vec.shrink_to_fit(); // 将capacity()减少为size()相同大小

  output(vec);

  vec.reserve(50); // 分配至少能容纳50个元素的内存空间

  // 以下添加元素

  for (decltype(vec.size()) ix = 0; ix != 40; ++ix) // decltype从表达式类型推导出变量类型

  {

  vec.push_back(ix*ix);

  }

  pr_vector(vec);

  output(vec); // s输出证明没超过size,vector就不会分配超额的空间

  // 我们不分配空间,看看自动管理

  for (decltype(vec.size()) ix = 0; ix != 40; ++ix) // decltype从表达式类型推导出变量类型

  {

  vec.push_back(ix*ix);

  }

  pr_vector(vec);

  output(vec); // 输出表示分配了超额的空间,【测试表明:分配的空间为当前的2倍,也就意味着越大越浪费】

  // 以下重新初始化,开始插入操作的学习【并学习及几种赋值的操作方法】

  std::vector vec2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 重新初始化

  pr_vector(vec); pr_vector(vec2);

  std::swap(vec, vec2); // 【快速】交换两容器的数据 swap(a, b)

  pr_vector(vec); pr_vector(vec2);

  vec2.assign(vec.begin(), vec.end()); // 参数为另外一个同类型vector的迭代器

  pr_vector(vec); pr_vector(vec2);

  vec.assign({0, 0, 0, 0, 0}); // 参数为初始化列表

  pr_vector(vec);

     

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++设计模式实现--职责链模式 下一篇sizeof的作用解释类中与类之外

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)