C++学习之旅-数组

一、内置复合类型数组

1. 数组声明方式

typeName arrayName[arraySize];

数组声明必须指明:

  1. 存储在数组中每个元素的类型(typeName);
  2. 数组名称(arrayName);
  3. 数组大小(arraySize),必须是整型常数或者常数表达式。

2. 数组初始化

  1. 数组只能在定义的时候初始化。
    int arr[4] = {1, 2, 3, 4};
    
  2. 初始化数组时,提供的值可以少于数组的元素个数。编译器会把其他元素设置为0。
    int arr[4] = {1};     //arr[0]=1, arr[1]=0, arr[2]=0, arr[3]=0
    
  3. 如果初始化数组时没有指定元素个数,编译器会计算元素个数。
    int arr[] = {1, 2, 3, 4};
    int arrSize = sizeof(arr)/sizeof(int);     //4
    

二、C++11新增的模板类array

array是C++11新增的模板类,在<array>头文件中声明,它对数组进行了封装,是长度固定的数组。array中提供一些符合STL标准的方法,使得STL算法可以运用于array对象。

  1. array对象的创建方式
    array<int, 5> ai;      //创建一个有5个int型元素的数组
    array<double, 4> ad = {1.2, 3.4, 5.6, 6.7};      //列表初始化,C++11新特性
    
  2. array常用函数
    函数功能
    void assign(const T& value)将容器中所有元素赋值为value。
    void fill(const T& value)将容器中所有元素填充为value。
    void swap(array& x)交换调用对象与x中所有元素。
    iterator begin()返回第一个元素对应的迭代器
    iterator end()返回最后一个元素下一个位置的迭代器
    size_type size() const返回array对象的元素个数
    size_type max_size() const返回array对象可容纳的元素个数,值与size()相同
    bool empty() const此函数只会返回false
    reference at(size_type pos)返回pos位置元素的引用,提供越界检查
    reference front()返回第一个元素的引用
    reference back()返回最后一个元素的引用
    T* data()返回array对象地址,即array对象第一个元素地址

三、STL模板中的数组vector

vector模板类在<vector>头文件中声明,是数组的一种类表示。它提供了自动内存管理功能,可以动态的改变vector对象的大小,并随着元素的添加和删除而增大和缩小。

  1. vector创建对象的方式
    // 创建一个空vector对象
    vector<int> vi;  
    // 定义一个大小为10,元素值都为1的vector。          
    vector<int> vi1(10, 1); 
    // 定义一个大小为10,元素值为0的vector。没有给定初始值,会调用元素类型的默认构造函数生成对象。
    vector<int> vi2(10); 
    // 使用初始化列表(initializer_list)初始化vector(C++11新特性)。
    vector<int> vi3 = { 1, 2, 3, 4, 5 };
    // 用已有vector中数据初始化。
    vector<int> vi4(vi3.begin()+1, vi3.end()); 
    
  2. vector常用函数
    函数功能
    void push_back(const T& val)在最后一个元素后面插入val
    void pop_back()删除最后一个元素
    iterator insert(itetator pos, const T& val)在pos位置的元素前插入val
    iterator insert(iterator pos, size_type n, const T& val)在pos位置的元素前插入n个值为val的元素
    iterator insert(iterator pos, iterator first, iterator last)在pos位置的元素前插入区间[first, last)中的元素
    void resize(size_type n)重置vector对象大小。多删少补,补T()。
    void resize(size_type n, const T& val)重置vector对象大小。多删少补,补val。
    void reserve( size_type n)vector对象的容量小于n时扩充到n
    iterator erase(iterator pos)删除pos位置的元素
    iterator erase(iterator first, iterator last)删除区间[first, last)中的元素
    void clear()清空所有元素
    vector& operator=(const vector& x)赋值运算符重载
    void assign(size_type n, const T& val)赋n个值为val的元素到vector中
    void assign(iterator first, iterator last)将区间[first, last)中的元素赋值给vector
    void swap(vector& x)交换调用vector对象与x中的元素
    T* data()返回vector对象中第一个元素的地址
    bool empty()判断vector是否为空(返回true时为空)
    size_type size() const返回vector对象的元素个数
    size_type max_size() const返回容器所能容纳的最大数目的元素个数。这是系统的限制,容器不一定能达到该大小。
    size_type capacity() const返回vector对象容量
    iterator begin()返回第一个元素的迭代器
    iterator end()返回最后一个元素下一个位置的迭代器
    T& at(size_type pos)返回pos位置元素的引用 ,提供越界检查
    T& front()返回第一个元素的引用
    T& back()返回最后一个元素的引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值