初始化vector数组以及使用

标准库容器vector
表示对象的集合,可存放任意类型的数据,但类型必须相同。
使用需要包含头文件#include <vector>

原理
vector是一个动态增长的数组,里面有一个指针指向一片连续的内存空间在增加元素时,如果超过自身最大的容量,vector则将自身的容量扩充为原来的两倍。扩充空间需要经过的步骤:自动申请一片更大的空间(空间配置器),将全部元素移动到新的空间,释放旧的内存空间,因此扩充空间的开销较大。一旦vector空间重新配置,则指向原来vector的所有迭代器都失效了,因为vector的地址改变了。

vector数组的初始化:
vector< T > vec  空vector,默认初始化
vector< T> vec1= { 1,2,3,4,5,6,7,8,9,10,11,12 }
vector< T> vec2{ 1,2,3,4,5,6,7,8,9,10,11,12 }
vector< T > vec3( n, value)  n个值为value的重复元素

vector< int > month { 12 }
像这样的声明会有歧义,究竟是0位置有一个元素12还是大小是12,C++11后给了初始化列表优先权,所以这里是只有一个值为12的元素,要想声明一个大小为12的vector需要使用圆括号: vector< int > month( 12 )
vector可使用范围for语句来遍历,可使用auto让编译器自动推导类型

int sum = 0forauto x : num )
	sum += x;

特别注意

  • 建议多使用c++容器来代替c风格的数组, 避免内存泄露等错误
  • 遍历时建议使用基于范围的for循环for (auto& val: arr){ val.xxx }
  • 还可使用迭代器来指定使用某个容器内的元素:
//vector<T> v
for (auto i = v.begin(); i != v.end(); ++i) {  //begin(),end()返回迭代器,auto简化代码
    cout << *i << " ";//*i指迭代器指向的对象,可操作他来改变容器内该对象的值或属性
    }
  • vector对象(以及string对象)的下标运算符可用于访问已存在的元素,不能用于在指定位置添加元素。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值