c++ 动态内存2


动态内存

vector * gen_vector(const size_t &size) {
    return new vector(size, 0);
}

void get_data((vector *ptr) {
    auto iter = ptr->begin();
    while(cin>>*iter++ && iter != ptr->end());
}

void display_data(vector *ptr) {
    for(const auto &v : *ptr) {
        cout<

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

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

shared_ptr版本

shared_ptr> gen_vector(const size_t &size) {
    return make_shared>(size, 0);
}

void get_data(shared_ptr> ptr) {
    auto iter = ptr->begin();
    while(cin>>*iter++ && iter != vec->end());
}

void display_data(shared_ptr> ptr) {
    for(const auto &v : *ptr) {
        cout<

相关