zoukankan      html  css  js  c++  java
  • 动态内存

    vector<int> * gen_vector(const size_t &size) {
        return new vector<int>(size, 0);
    }
    
    void get_data((vector<int> *ptr) {
        auto iter = ptr->begin();
        while(cin>>*iter++ && iter != ptr->end());
    }
    
    void display_data(vector<int> *ptr) {
        for(const auto &v : *ptr) {
            cout<<v<<" ";
        }
        cout<<endl;
        delete ptr;
    }
    
    
    auto ptr = gen_vector(10);
    get_data(ptr);
    display_data(ptr);

    在写get_data的时候犯了一个错误,代码如下

    void get_data((vector<int> *ptr) {
        auto vec = *ptr;                          // 这里拷贝了一份ptr指向的vector,所以下面iter访问的是拷贝vector的空间
        auto iter = vec.begin();                  // 而不是ptr指向的空间。
        while(cin>>*iter++ && iter != vec.end());
    }

    shared_ptr版本

    shared_ptr<vector<int>> gen_vector(const size_t &size) {
        return make_shared<vector<int>>(size, 0);
    }
    
    void get_data(shared_ptr<vector<int>> ptr) {
        auto iter = ptr->begin();
        while(cin>>*iter++ && iter != vec->end());
    }
    
    void display_data(shared_ptr<vector<int>> ptr) {
        for(const auto &v : *ptr) {
            cout<<v<<" ";
        }
        cout<<endl;
    }
    
    
    auto ptr = gen_vector(10);
    get_data(ptr);
    display_data(ptr);
  • 相关阅读:
    Git
    java类加载
    DES-加解密C语言实现
    Android消息队列初识 && ThreadLocl 简述
    DbUTils
    JDBC(二)
    jdbc工具类
    JDBC(一)
    数据库
    MySQL数据库学习: 01 —— 数据库的概述
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11447024.html
Copyright © 2011-2022 走看看