编写函数,返回一个动态分配的int的vertor。将此vector传递给另一个函数,这个函数读取标准输入,将读入的值保存在vector元素中。再将vector传递给另一个函数,打印读入的值。记得在恰当的时刻delete vector。
#include <iostream>
#include <vector>
using namespace std;
void fun2(istream &cin,vector<int> *v){
int i;
while (cin>>i)
{
v->push_back(i);
}
}
void fun3(vector<int> *v){
for (auto i=(*v).begin();i!=(*v).end();++i)
{
cout<<*i<<endl;
}
}
vector<int>* fun1(){
auto *v = new vector<int>;
fun2(cin,v);
fun3(v);
return v;
}
int main(){
auto ptr = fun1();
delete ptr;
return 0;
}
代码:https://gitee.com/feistel/codes/uw43p6xy9t7aghcfndzro90
练习12.7,改用用shared_ptr。代码如下:
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
void fun2(istream &cin,shared_ptr<vector<int>> v){
int i;
while (cin>>i)
{
v->push_back(i);
}
}
void fun3(shared_ptr<vector<int>> v){
for (auto i=(*v).begin();i!=(*v).end();++i)
{
cout<<*i<<endl;
}
}
shared_ptr<vector<int>> fun1(){
shared_ptr<vector<int>> v = make_shared<vector<int>>();
fun2(cin,v);
fun3(v);
return v;
}
int main(){
fun1();
return 0;
}