动态分配与释放内存 与 vector类模板

   一般情况下我们在写程序的时候就要计划好,在这个程序中,我们需要用到哪些数据,什么类型的数据,数据规模有多大;但有很多时候,只有程序运行取来才能知道数据规模有多大,这时候就需要用到动态内存分配。

1 动态申请/释放类型的操作符new/delete

语法形式:

// 创建
new 类型名T (初始化参数列表)
// 释放
delete 指针p // 释放指针p所指向的内存,p必须是new操作的返回值
			 // 删除的是分配的空间而不是指针变量

功能:
在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋初值。
结果:
① 成功:T类型的指针,指向新的分配内存
② 失败:抛出异常。

1.1 申请和释放动态数组

#include<iostream>
using namespace std;
int main(){
    int size;
    cout << "enter a number :";
    cin >> size;
    int *array = new int[size]; // 申请了int型数组空间,得到一个指针,赋值给指针型变量array
    						    // new操作成功操作后的结果是得到一个指针
    cout << "enter numbers : " << endl;
    for (int i = 0; i < size;i++)
        cin >> array[i];
    for (int i = 0; i < size; i++)
        cout << "aray[" << i << "] = " << array[i] << endl;
    delete[] array; //释放内存,delete[] 指释放的是数组,只有delete只是放首元素空间
}

1.2 智能指针

   unique_ptr:
   不允许多个指针共享资源,可以用标准库中的move函数转移指针;    shared_ptr:
   多指针共享资源;
   weak_ptr:
   可复制shared_ptr,但其构造或释放对资源不产生影响

1.3 vector

   vector是C++标准模板库中的一个类模板,vector----向量,使用前需要将头文件包进来。vector 其实就像一个数组一样好用,并且比数组更安全好用:
   (1). 可以封装任何类型的动态数组,自动创建和删除
   (2). 数组下标越界检查
   (3). 各种操作函数

#include<vector>
#include<iostream>
using namespace std;

int main(){
    int size;
    cout << "enter a number size :";
    cin >> size;
    vector<int> array(size);
    cout << "enter numbers : " << endl;
    for (int i = 0; i < size; i++)
        cin >> array[i];
    for (int i = 0; i < size; i++)
        cout << "aray[" << i << "] = " << array[i] << endl;
    int size_of = array.size();
    cout << size_of << endl;
}

这只是一个vector类模板的最简单的定义与初始化应用。
后面笔记有机会再详细补充。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值