【C++学习笔记】使用vector创建数组对象

0x00 前言

文章中的文字可能存在语法错误以及标点错误,请谅解;

如果在文章中发现代码错误或其它问题请告知,感谢!

Windows版本:Win10专业版

VSCode版本: 1.55.2 (user setup)

0x01 vector定义动态数组及访问形式

C++标准提供被封装的动态数组——vector。vector是一个封装动态大小数组的顺序容器(Sequence Container),这种被封装的数组可以具有各种类型。vector不是一个类,而是一个类模板。vector定义动态数组的形式为:

vector<元素类型>数组对象名(数组长度);

跟普通数组相比,使用vector定义的数组对象元素都会被初始化。若是数组元素为基本类型则元素初始化为0;若数组元素为类类型,则会调用类的默认构造函数初始化(需要保证该类具有默认的构造函数)。

vector动态数组也可以自定义初值,形式为:

vector<元素类型>数组对象名(数组长度,元素初值);

对vector数组对象元素访问与普通数组相同:

数组对象名[下标表达式]

注意,vector数组对象不是数组,而是封装了数组的对象,vector数组名字表示的就是一个数组对象,而非数组的首地址。

vector定义数组对象成员函数如下,其中size()返回数组长度,比较重要:

    1.push_back 在数组的最后添加一个数据

    2.pop_back 去掉数组的最后一个数据

    3.at 得到编号位置的数据

    4.begin 得到数组头的指针

    5.end 得到数组的最后一个单元+1的指针

    6.front 得到数组头的引用

    7.back 得到数组的最后一个单元的引用

    8.max_size 得到vector最大可以是多大

    9.capacity 当前vector分配的大小

    10.size 当前使用数据的大小

    11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值

    12.reserve 改变当前vecotr所分配空间的大小

    13.erase 删除指针指向的数据项

    14.clear 清空当前的vector

    15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)

    16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)

    17.empty 判断vector是否为空

    18.swap 与另一个vector交换数据

0x02 vector应用举例

#include<iostream>
#include<vector>
using namespace std;
//计算arr数组元素平均值
double average(const vector<double>&arr)
{
	double sum = 0;
	int i = 0;
	for(i = 0; i < arr.size();i++)
	{
		sum += arr[i];
	}
		return sum/arr.size();
}

int main()
{
	unsigned n;
	cout << "n=:";
	cin >> n;
	
	vector<double>arr(n);
	cout << "Please input" << n << "real numbers:" << endl;
	for(int i = 0; i < n;i++)
	{
		cin >> arr[i];
	}
	cout << "Average = " << average(arr) << endl;
	return 0;
}

《C++语言程序设计(第4版)》书上所有章节出现的示例源代码随着学习的深入会陆续上传至github,代码为个人手动输入并通过编译,有的示例代码可能没有注释:https://github.com/fyw4/C-plus-plus-learning-example
以上。

参考文档:
郑莉 董渊 何江舟.《C++语言程序设计(第4版)》[M].北京:清华大学出版社。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值