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<