码迷,mamicode.com
首页 > 编程语言 > 详细

Part6 数组、指针与字符串 6.10 智能指针 6.11 vector对象

时间:2017-12-13 23:24:14      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:i++   col   ber   real   sha   c++   sum   tor   动态   

6.10 智能指针
C++11 提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理

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

 

 

6.11 vector对象
为什么需要vector?
  封装任何类型的动态数组,自动创建和删除。
  数组下标越界检查。

例6-18 中封装的ArrayOfPoints也提供了类似功能,但只适用于一种类型的数组。

vector对象的定义
  vector<元素类型> 数组对象名(数组长度);
  如;vector<int> arr(5)
vector数组对象名不表示数组首地址

//6-20vector应用举例
#include<iostream>
#include<vector>
using namespace std;
double average(const vector<double> &arr){
    double sum = 0;
    for(unsigned 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(unsigned i = 0; i < n; i++)
        cin >> arr[i];
    cout << "Average = " << averrage(arr) << endl;
    return 0;
}
//基于范围的for循环配合auto举例
#include<vector>
#include<iostream>
using namespace std;
int main(){
    vector<int> v = {1,2,3};
    for(auto i = v.begin(); i != v.end(); i++)//begin得到起始“指针”,end得到结束“指针”
        cout << *i << endl;
    for(auto e:v)//基于范围
        cout << e << endl; 
    return 0;
}

 


 

Part6 数组、指针与字符串 6.10 智能指针 6.11 vector对象

标签:i++   col   ber   real   sha   c++   sum   tor   动态   

原文地址:http://www.cnblogs.com/leosirius/p/8034762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!