12.6 编写函数,返回一个动态分配的int的vector。将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中。再将vector传递给另一个函数,打印读入的值。记得在恰当的时刻delete vector。
#include<iostream> #include<new> #include<vector> using namespace std; vector<int>* f1() { vector<int> *p=new vector<int>; return p; } vector<int>* f2() { vector<int> *p=f1(); int n; while(cin>>n) p->push_back(n); return p; } int main() { vector<int> *p=f2(); for(auto v:*p) cout<<v<<" "; delete p; return 0; }
12.7 使用shared_ptr而不是内置指针。
#include<iostream> #include<vector> #include<memory> using namespace std; shared_ptr<vector<int>> f1() { shared_ptr<vector<int>> p=make_shared<vector<int>>(); return p; } shared_ptr<vector<int>> f2() { shared_ptr<vector<int>> p=f1(); int n; while(cin>>n) p->push_back(n); return p; } int main() { shared_ptr<vector<int>> p=f2(); for(auto v:*p) cout<<v<<" "; return 0; }