子嘉的博客 子嘉的博客
首页
bic-bic
技术
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

高子嘉

没有比脚更长的路,没有比人更高的山
首页
bic-bic
技术
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • new
  • vector_init
  • vector_traverse
  • macro_magic
  • io
  • gdb
  • cplusplus
子嘉
2022-06-05

vector_init

C++的初始化方法很多,各种初始化方法有一些不同。

  1. vector ilist1;

默认初始化,vector 为空, size 为 0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。

  1. vector ilist2(ilist); vector ilist2 = ilist;

两种方式等价 ,ilist2 初始化为 ilist 的拷贝,ilist 必须与 ilist2 类型相同,也就是同为 int 的 vector 类型,ilist2 将具有和 ilist 相同的容量和元素

  1. vector ilist = {1,2,3.0,4,5,6,7}; vector ilist {1,2,3.0,4,5,6,7};

ilist 初始化为列表中元素的拷贝,列表中元素必须与 ilist 的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。

  1. vector ilist3(ilist.begin()+2,ilist.end()-1);

ilist3 初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与 ilist3 的元素类型相容,在本例中 ilist3 被初始化为{3,4,5,6}。注意:由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如,用一个 double 的 list 的范围来初始化 ilist3 是可行的。另外由于构造函数只是读取范围中的元素进行拷贝,因此使用普通迭代器还是 const 迭代器来指出范围并没有区别。这种初始化方法特别适合于获取一个序列的子序列。

  1. vector ilist4(7);

默认值初始化,ilist4 中将包含 7 个元素,每个元素进行缺省的值初始化,对于 int,也就是被赋值为 0,因此 ilist4 被初始化为包含 7 个 0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。

  1. vector ilist5(7,3);

指定值初始化,ilist5 被初始化为包含 7 个值为 3 的 int

  1. int int_arr={1,2,3,4,5}; vector ivec(begin(int_arr), end(int_arr));
编辑 (opens new window)
上次更新: 2023/02/24, 10:34:03
new
vector_traverse

← new vector_traverse→

最近更新
01
mongodb restore
03-06
02
pytesseract
02-28
03
consul
02-24
更多文章>
Theme by Vdoing | Copyright © 2022-2025 子嘉 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式