C++中vector<int> dummy1(rows,-1);声明的含义解析
vector<int> dummy1(rows,-1);语句含义说明 先给你补个基础认知:C++里的vector就是可以自动调整大小的动态数组,元素存在连续内存上,用偏移量访问元素的效率和原生数组没差,不用你自己手动处理内存扩容的问题。
整行代码可以拆成两部分理解:
vector<int>:声明容器类型,说明这个动态数组里存的每一个元素都是int类型整数dummy1:是这个动态数组的变量名,后续读写这个数组都靠这个名字调用
你重点问的构造部分dummy1(rows,-1),本质是调用vector的带参构造函数,在变量创建的同时直接完成初始化,两个传入参数的作用非常明确:
- 第一个参数
rows:设置这个动态数组初始化完成后的总长度。比如rows的值是10,那刚创建好的dummy1长度就是10,预留了10个存int值的位置 - 第二个参数
-1:设置所有位置的统一初始值。也就是说,不管你第一个参数设的长度是多少,这所有位置上的元素,创建时都会被直接赋值为-1
举个直观的例子:如果代码运行到这一句时,变量
rows的值是4,那这句执行完后,dummy1里存储的内容就是[-1, -1, -1, -1],你可以直接用dummy1[0]到dummy1[3]的下标方式访问对应位置的元素,和普通数组的访问逻辑完全一致,后续也可以根据需要动态调整它的长度。
这里提个新手很容易踩的坑:不要把圆括号初始化和花括号列表初始化搞混。如果把这里的圆括号换成花括号写成vector<int> dummy1{rows,-1},效果会完全变成「创建一个长度为2的数组,两个元素分别是rows的值和-1」,和我们上面说的填充指定长度的逻辑完全不同,写的时候要注意区分。
内容的提问来源于stack exchange,提问作者Arpit Sharma
相关产品推荐
相关产品推荐

